第八章 集合

  1. 遍历集合的方法
    1 直接使用Lambda表达式
    2 使用Iterator接口的hasNext()遍历
    3 使用Lambda表达式和forEachRemaining()遍历
    4 使用forEach()遍历
  2. 批量删除和统计集合中的元素
    removeIf(Predicate filter):批量删除
    Predicate:统计

Stream

4.HashSet与LinkedHashSet

LinkedHashSet是用链表维护元素次序的HashSet,元素的顺序与添加顺序一致

5.TreeSet是带自然排序和定制排序的HashSet

自然排序调用Comparable接口的compareTo(Object obj)比较元素的大小关系,将元素按升序排列。

定制排序通过Comparator接口的int compare(T o1,T o2)对象负责元素的排序逻辑。

把一个对象添加到TreeSet时,该对象的类必须实现Comparable接口

6.EnumSet以枚举值在Enum类内的定义顺序决定集合元素的顺序

7.EnumSet性能优于HashSet优于TreeSet,但他们的线程均不安全

8.List集合中每个元素都有其对应的顺序索引

与set集合相比,List集合增加了根据索引来插入,替换和删除几何元素的方法

List集合有sort()和replaceAll()两个方法,sort()通过Comparator控制元素排序,replaceAll()通过UnaryOperator接口替换所有集合元素

List集合用for循环遍历

List新添加了listIterator()方法(继承Iterator接口),增加了向前迭代的功能,而且ListIterator还可通过add()方法向List集合中添加元素

9.Arrays类的asList()可以创建ArrayList实例(固定长度,不能增加或删除集合里的元素)

10.Queue用于模拟队列(先进先出)这种数据结构,有一个PriorityQueue()实现类,有一个Deque()接口,Deque()接口提供ArrayDeque()和LinkedList()两个实现类

PriorityQueue保存元素的顺序并不按加入队列的顺序,而是按队列元素的大小重新排序

队列的头部保存队列中存放时间最长的元素,尾部保存队列中存放时间最短的元素

LinkedList既是List集合,也实现了Deque()接口

11.Java是先实现了Map,然后通过包装一个所有value都为null的Map就实现了Set

12.HashMap和LinkedHashMap实现类

13.Properties类是Hashtable类的子类,相当于一个key和value都是String类型的Map

14.正如Set接口派生出SortedSet子接口,Map接口也派生出一个SortedSet子接口,SortedMap子接口也有TreeMap实现类

 TreeMap包括两种排序方式,自然排序和定制排序

WeakHashMap的key保留了对实际对象的弱引用,当垃圾回收了该key所对应的实际对象后,WealHashMap自动删除key对应的key-value对

不要让WeakHashMap中key所引用的对象具有任何强引用,否则WeakHashMap失去意义

你可能感兴趣的:(第八章 集合)