前提摘要:
LinkedList链表(实现list):
LinkedList:实质链表(允许 null 元素的存在+允许重复元素+用于首部或指定位置进行添加和删除较多的情况下。)
LinkedList 实现了 List 接口,可进行列表的相关操作。
ArrayList列表(实现list):
ArrayList实质是顺序表,底层是一个数组。(用于查询更改,尾部添加删除较多的情况)
方法和上图一致
LinkedList链表(实现Queue):
LinkedList:实质链表(允许 null 元素的存在+允许重复元素+用于首部或指定位置进行添加和删除较多的情况下。)
LinkedList 实现了 Queue接口,可进行列表的相关操作。
TreeSet集合(实现set):
特点:不允许重复数据,自动排序,不能含有空元素。
在TreeSet中,当你插入一个元素时,确实可以理解为使用了一次O(log n)的操作来完成去重和排序的功能。(去重复杂度: O(log n)。TreeSet是基于红黑树实现的,插入元素时,它会根据比较器(Comparator)或者元素自身的自然顺序将元素放入正确的位置,保证元素的唯一性。红黑树是一种自平衡的二叉查找树,它保证了树中的元素是有序的。当你插入一个新元素时,红黑树会根据元素的大小关系将其插入到合适的位置,从而保持树的有序性。)
因此,每次插入元素到TreeSet中,你可以理解为同时完成了去重和排序的操作,其时间复杂度为O(log n)。
boolean add(E e) //如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。 boolean addAll(Collection<? extends E> c) //如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。 void clear() //移除此 set 中的所有元素(可选操作)。 boolean contains(Object o) //如果 set 包含指定的元素,则返回 true。 boolean containsAll(Collection<?> c) //如果此 set 包含指定 collection 的所有元素,则返回 true。 boolean equals(Object o) //比较指定对象与此 set 的相等性。 int hashCode() //返回 set 的哈希码值。 boolean isEmpty() //如果 set 不包含元素,则返回 true。 Iterator<E> iterator() //返回在此 set 中的元素上进行迭代的迭代器。 boolean remove(Object o) //如果 set 中存在指定的元素,则将其移除(可选操作)。 boolean removeAll(Collection<?> c) //移除 set 中那些包含在指定 collection 中的元素(可选操作)。 boolean retainAll(Collection<?> c) //仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。 int size() //返回 set 中的元素数(其容量)。 Object[] toArray() //返回一个包含 set 中所有元素的数组。
HashSet集合(实现set)
去重复杂度: O(1)。
Map类型:
HashMap HashMap中k的值没有顺序,常用来做统计。所以不能保证取里面元素时的顺序(key:value有null的时候可以用+key重复时替换旧值,但是key位置不会变)
LinkedHashMap 它内部有一个链表,保持Key插入的顺序。可以保证按添加的顺序去取。(+key重复时替换旧值,但是key位置不会变)
TreeMap 可以保证按 key 的排序顺序去取(key 需要实现 Comparable, 否则会报错 cannot be cast to java.lang.Comparable) +key重复时替换旧值,而且会重新排序位置
4.Hashtable与 HashMap类似,它继承自Dictionary类、不同的是:它不允许记录的键或者值为空;它支持线程的同步、即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢
Keyset():
for (Integer key : map.keySet()) {
System.out.println("key = " + key);
}
entrySet();
功能:返回一个保存键值对的set集合,便于遍历的取出数据
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}
map.putAll();
功能:将集合合并
Map map3 = new HashMap();
//添加键值
map3.put("1", "苹果");
map3.put("2", "香蕉");
map3.put("3", "菠萝");
System.out.println("map3的大小为:"+map3.size());
//再生成一个实例
Map map4 = new HashMap();
map4.put("4", "梨子");
map4.put("5", "柿子");
System.out.println("map4的大小为:"+map4.size()); //把map4合并到map3
//合并时如果map4的key与map3的key有重复的,则map4的键值覆盖与map3重复的键值
map3.putAll(map4);
System.out.println("合并后map3的大小为:"+map3.size());