Merge pull request #27 from xiaoleeza/master

bugfix:fix typo
This commit is contained in:
Joe 2019-08-30 00:45:38 -05:00 committed by GitHub
commit a175f3dac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

View File

@ -53,7 +53,7 @@ static List<Integer> intArrayAsList(int[] a) {
@Override
public Integer set(int i, Integer val) {
int oldVal = a[I];
int oldVal = a[i];
a[i] = val; // Auto-unboxing
return oldVal; // Autoboxing
}

View File

@ -33,7 +33,7 @@ public class Bigram {
  主程序重复添加二十六个双字母组合到集合中,每个双字母组合由两个相同的小写字母组成。 然后它会打印集合的大小。 你可能希望程序打印 26因为集合不能包含重复项。 如果你尝试运行程序,你会发现它打印的不是 26而是 260。它有什么问题
  显然,`Bigram` 类的作者打算重写 `equals` 方法(详见第 10 条),甚至记得重写 `hashCode`(详见第 11 条)。 不幸的是,我们倒霉的程序员没有重写 `equals`,而是重载它(详见第 52 条)。 要重写 `Object.equals`,必须定义一个 `equals` 方法,其参数的类型为 `Object`,但 `Bigram``equals` 方法的参数不是 `Object` 类型的,因此 `Bigram` 继承 `Object``equals` 方法,这个 `equals` 方法测试对象的引用是否是同一个,就像 `==` 运算符一样。 每个母组合的 10 个副本中的每一个都与其他 9 个副本不同,所以它们被 `Object.equals` 视为不相等,这就解释了程序打印 260 的原因。
  显然,`Bigram` 类的作者打算重写 `equals` 方法(详见第 10 条),甚至记得重写 `hashCode`(详见第 11 条)。 不幸的是,我们倒霉的程序员没有重写 `equals`,而是重载它(详见第 52 条)。 要重写 `Object.equals`,必须定义一个 `equals` 方法,其参数的类型为 `Object`,但 `Bigram``equals` 方法的参数不是 `Object` 类型的,因此 `Bigram` 继承 `Object``equals` 方法,这个 `equals` 方法测试对象的引用是否是同一个,就像 `==` 运算符一样。 每个母组合的 10 个副本中的每一个都与其他 9 个副本不同,所以它们被 `Object.equals` 视为不相等,这就解释了程序打印 260 的原因。
  幸运的是,编译器可以帮助你找到这个错误,但只有当你通过告诉它你打算重写 `Object.equals` 来帮助你。 要做到这一点,用 `@Override` 注解 `Bigram.equals` 方法,如下所示: