JDK 11 阅读 - Tips

Overview

  • default 关键词 在接口中可以有实现方法。可以改接口而不再次编译。 但多重继承的时候,由于接口A和接口B都有此default实现的方法,因此,出发实现类实现了此default方法,否则报错。

  • spliterator 接口实现了并发的迭代,普通用Iterator接口,在每个collection中都有此实例(Hashmap的spliterator)

  • Collections.unmodifiableSet 无法修改的Collection

  • 如果Collection 是一个unmodifiable Set,使用copyof方法不一定能做出一个copy

  • 如果需要队列,请使用PriorityQueue。当你想要一个集合时,使用Treeset(两者都提供了自动排序)

    - 原理 是否允许重复元素 所继承的集合类 集合内元素是否有序 应用场景
    TreeSet 排序二叉树 不允许 Set集合 有序 需要找出集合中大于等于某个数值的最小值(ceiling()方法),或小于等于某个数值的最大值(floor()方法),即有不等关系的需求(时间复杂度为二分法的时间复杂度)(还有higher()和lower()方法分别代表大于以及小于某个值)
    PriorityQueue 堆排序 允许 queue 无序 需要找出集合中的最大值(队列尾部)或最小值(队列头部)时,即有最值的需求