(真的很简单明了)java 集合常用方法

//此文章对集合了解较深的同学没有阅读意义
大致集合框架体系如图所示:
在这里插入图片描述
相关注释:
E - Element (在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)

*Collection接口:

public boolean add(E e);  //添加元素到集合
public boolean addAll(Collection<? extends E> c); //存放一个集合
public boolean contains(Object o);  //查找集合中的元素
public boolean isEmpty();  //判断一个集合是否为空
public boolean remove(Object 0);//删除一个集合中的元素
public int size();//返回集合的长度
public void clear();//清空所有元素
public boolean equals(Object o);//判断是否相等


*List接口(包括Collection接口的方法):

 public E get(int index); //根据索引取得元素
 public E set(int index,E element);//替换元素,index为要替换元素下标 element为要替换元素
 public ListIterator<E> listIterator() List //List自己的迭代器

*Queue接口(包括Collection接口的方法)

boolean offer(E e);//区别于add ,它的返回值是boolean类型,如果添加未成功add是报错,它是返回false
//E代表的是元素的类型
E poll();//返回首个元素并从队列中弹出,如果队列是空的,就返回null
E peek();//返回首个元素,不会移除首个元素,如果队列是空的就返回null
E element();//返回首个元素,不会移除首个元素,如果队列是空的就抛出异常NoSuchElementException

*Set接口(包括Collection接口的方法):
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素(具体在其实现类HashSet中说明)

*Map接口
Map接口下的集合不同于Collection,Collection中的集合,元素是孤立存在的(可以看成单身),向集合中存储元素采用一个个元素的方式存储。而Map中元素是成对存在的(理解我夫妻),每个元素由键与值两部分组成,通过键可以找对所对应的值。这里我们可以把键理解为老实的一方,它只能对应一个值(好比一个好的女朋友只能对应一个男朋友),而值就是不老师的一方(一个渣男可以对应许多个女朋友)


int size();//返回有多少对元素
boolean isEmpty();
boolean containsKey(Object xx);//查询集合中是否包含以xx作为键的元素
boolean containsValue(Object xx);//查询集合中是否包含以xx作为值的元素
V get(Object key);//返回key所对应的值
V put(K key, V value);//向map集合中添加Key为key,Value为value的元素,当添加成功时返回null,否则返回value。
V remove(Object key);//删除Key为key值的元素。
void clear();
void putAll(Map<? extends K,? extends V> m)//向map中添加指定集合的所有元素
Set<Map.Entry<K,V>> entrySet()//返回map到一个set集合中
			int u=1;
			String j="杨帆";	 
			Map i =new HashMap();
			i.put(u, j);
			Set xx=i.entrySet();
			System.out.println(xx);
			//此时输出结果为[1=杨帆]
boolean equals(Object o)//判断集合元素是否相等
Set<K> keySet()//返回map集合中所有的键
			int u=1;
			String j="杨帆";	 
			int qq=2;
			String zz="女朋友";
			Map i =new HashMap();
			i.put(u, j);
			i.put(qq, zz);
			Set xx=i.keySet();
			System.out.println(xx);	
			//此时输出结果为[1, 2]
Collection<V> values()//返回map集合中所有的Value到一个Collection集合			
				
		
 

ArrayList
可以把它看做是一个数组的升级版,在数组的基础上添加了一些列的方法并且其容量大小是动态的,提高了内存的利用率
因为继承于List接口自然包括list的方法,不过多说明

public void trimToSize()//我们知道ArrayList 的 容量会随着已用容量的增大而增大,并且一直大于已用容量,这个方法就是根据已用容量消减总容量
public void ensureCapacity(int minCapacity)//预设容量,顾名思义,根据要装东西的容量事先设置好容量,提供内存利用率
public int indexOf(Object o)//找到o元素最早出现位置,如果不存在返回-1
public int lastIndexOf(Object o)//找到o元素最后出现位置,如果不存在返回-1
public Object[] toArray()//将Arraylist转化为一个数组

Linkedlist
LinkedList也是List接口的实现类采用的是链表的存储方式(ArrayList是线性表),链表在删除修改方面会比线性表高效很多,但线性表在查询方面要高效很多,故根据需求选择适合的储存方式
如上面结构图所示它可以继承于list 也可以继承于queue可以根据需求选择继承于谁

public void addFirst(E e)//队头加
public void addLast(E e)//队尾加
public E getFirst()//返回队首
public E getLast()//返回队尾
public E removeFirst()//返回队首的同时移除队首
public E removeLast()
public E peekFirst() //与peek功能相同
public E peekLast() 
public E pollFirst()//返回并且弹出队首
public E pollLast()
public void push(E e)//队首添加,add和offer都是队尾添加
public E pop()//弹出队首
public boolean removeFirstOccurrence(Object o)//功能与remove相同
public boolean removeLastOccurrence(Object o)//remove是从队头开始找,此函数是从队尾

Hashmap
为什么先讲hashmap 因为Hashset是根据hashmap来实现的,因为它继承于Map借口,自然包括了他的方法,hashmap顾名思义就是哈希表,也就是根据哈希表的形式存储数据,因为哈希函数的存在,查询,修改的效率非常高(不考虑哈希冲突的情况下);

 public V getOrDefault(Object key, V defaultValue) //如果key在键中存在就返回key的值,不存在返回defaultValue
 public V putIfAbsent(K key, V value) //如果key在键中存在,就返回key对应的值,不存在就添加key-value
 public boolean replace(K key, V oldValue, V newValue) //取代某个键的值
 public V replace(K key, V value)//在指定的键已经存在并且有与之相关的映射值时才会将指定的键映射到指定的值(新值), 在指定的键不存在时,方法会return回来一个null 

Hashset
其源码是根据hashmap实现的,这也是为什么把hashmap放前面的原因,它继承于set接口,所以具有其相应的方法。
它延续了set的特性,元素不能重复,还有就是它不保持插入顺序,允许包含值为null的元素,但最多只能一个,hashset常用方法基本都是继承与set,而且它使用不多,知道

猜你喜欢

转载自blog.csdn.net/jahup/article/details/105894940