Java核心技术I第九章集合笔记

一些乱七八糟的总结

  • 队列通常的两种实现方式:循环数组和链表。

  • 在Java 8 中迭代可迭代对象可以直接使用

1
iterator.forEachRemaining(element -> do something with element);
  • Iterator 接口的 remove 方法将会删除上次调用 next 方法时返回的元素,如果调用 remove 方法前没有调用 next 方法会抛出 IllegalStateException。

  • hashCode 方法的定义是要保证包含相同严肃的两个集会得到相同的散列码。

  • | 集合类型 | 描述|
    | :-: | :-: |
    | ArrayList | 一种可以动态增长和缩减的索引序列 |
    | LinkedList | 一种可以在任何位置进行高效地插入和删除操作的有序序列 |
    | ArrayDeque | 一种用循环数组实现的双端队列 |
    | HashSet| 一种没有重复元素的无序集合 |
    | TreeSet | 一种有序集合 |
    | EnumSet | 一种包含枚举类型的集合 |
    | LinkedHashSet | 一种可以记住元素插入次序的集合 |
    | PriorityQueue | 优先队列 |
    | HashMap | 键值对映射 |
    | TreeMap | 一种键值有序排列的映射表 |
    | EnumMap | 一种属于枚举类型的映射表 |
    | LinkedHashMap | 一种可以记住键值项添加次序的映射表 |
    | WeakHashMap | 一种其值无用武之地之后可以被垃圾回收器回收的映射表 |
    | IdentityHashMap | 一种用 == 而不是 equals 比较键值的映射表

  • ListIterator 继承了 Iterator 其中定义了一些反向遍历等方法。并且通过get(n)方法可以返回链表指定位置元素(其中做了一些优化 如果n大于size/2 那么从尾到头遍历)。

  • 散列表通过链表数组实现,如果其中的桶被占满会出现 散列冲突现象。

  • TreeSet 在 Java 8 之后使用 红黑树 进行实现。TreeSet 性能会比 HashSet慢一些。如果需要自定义比较器 需要传入Comparator。

  • :: 为 Java 8之后的静态方法引用,注意 是引用不是调用。

  • Collections 工具类中提供了很多方法 比如排序,对集合的各种操作,返回不可更改集合, 返回受查视图等。

  • toArray() 返回的是一个 Object[] 数组。

-------------本文结束感谢阅读-------------