校订第十二章 集合

This commit is contained in:
1326670425
2019-07-15 11:41:30 +08:00
parent 654ec4cb2e
commit f9a5f1c8e8

View File

@@ -137,7 +137,7 @@ Braeburn@4e25154f
因此,可以将 **Apple** 的子类型添加到被指定为保存 **Apple** 对象的集合中。
程序的输出是从 **Object** 默认的 **toString()** 方法产生的,该方法打印类名,后边跟着对象的散列码的无符号十六进制表示(这个散列码是通过 **hashCode()** 方法产生的)。将在[附录理解equals和hashcode方法]()中了解有关散列码的内容。
程序的输出是从 **Object** 默认的 **toString()** 方法产生的,该方法打印类名,后边跟着对象的散列码的无符号十六进制表示(这个散列码是通过 **hashCode()** 方法产生的)。将在[附录理解equals和hashCode方法]()中了解有关散列码的内容。
<!-- Basic Concepts -->
## 基本概念
@@ -1789,13 +1789,18 @@ Serializable]
尽管存在这些问题但Java集合仍是在日常工作中使用的基本工具它可以使程序更简洁、更强大、更有效。你可能需要一段时间才能熟悉集合类库的某些方面但我想你很快就会找到自己的路子来获得和使用这个类库中的类。
[^1]: 许多语言例如PerlPython和Ruby都有
集合的本地支持。
[^1]: 许多语言例如PerlPython和Ruby都有集合的本地支持。
[^2]: 这里是操作符重载的用武之地C++和C#的集合类都使用操作符重载生成了更简洁的语法
[^3]: 在[泛型]()章节的末尾,有个关于这个问题是否很严重的讨论。但是,[泛型]()章节还将展示Java泛型远不止是类型安全的集合这么简单。
[^4]: **remove()** 是一个所谓的“可选”方法(还有一些其它的这种方法),这意味着并非所有的 **Iterator** 实现都必须实现该方法。这个问题将在[附录:集合主题]()中介绍。但是标准Java库集合实现了 **remove()** ,因此在[附录:集合主题]()章节之前,都不必担心这个问题。
[^5]: 这实际上依赖于具体实现。优先级队列算法通常会按插入顺序排序(维护一个*堆*),但它们也可以在删除时选择最重要的元素。 如果对象的优先级在它在队列中等待时可以修改,那么算法的选择就显得很重要了。
[^6]: 有些人提倡这样一种自动创建机制,即对一个类中所有可能的方法组合都自动创建一个接口,有时候对于单个的类都是如此。 我相信接口的意义不应该仅限于方法组合的机械地复制,因此我在创建接口之前,总是要先看到增加接口带来的价值。
[^7]: 这在Java SE5之前是不可用的因为该方法被认为与操作系统的耦合度过紧因此违反“一次编写处处运行”的原则。现在提供它这一事实表明Java的设计者们更加务实了。
<!-- 分页 -->