58)写一段代码在遍历 ArrayList 时移除一个元素?(答案)-达内培训负责整理
该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的 remove()方法.这有一段示例代码,是使用正确的方式来实现在遍历的过程中移除元素,而不会出现 ConcurrentModificationException 异常的示例代码.
59)我们能自己写一个容器类,然后使用 for-each 循环码?
可以,你可以写一个自己的容器类.如果你想使用 Java 中增强的循环来遍历,你只需要实现 Iterable 接口.如果你实现 Collection 接口,默认就具有该属性.
60)ArrayList 和 HashMap 的默认大小是多数?(答案)
在 Java 7 中,ArrayList 的默认大小是 10 个元素,HashMap 的默认大小是16个元素(必须是2的幂).这就是 Java 7 中 ArrayList 和 HashMap 类的代码片段:
1
2
3
4
5
// from ArrayList.java JDK 1.7
privatestaticfinalintDEFAULT_CAPACITY = 10;
//from HashMap.java JDK 7
staticfinalintDEFAULT_INITIAL_CAPACITY = 1<< 4; // aka 16
61)有没有可能两个不相等的对象有有相同的 hashcode?
有可能,两个不相等的对象可能会有相同的 hashcode 值,这就是为什么在 hashmap 中会有冲突.相等 hashcode 值的规定只是说如果两个对象相等,必须有相同的hashcode 值,但是没有关于不相等对象的任何规定.
62)两个相同的对象会有不同的的 hash code 吗?
不能,根据 hash code 的规定,这是不可能的.
63)我们可以在 hashcode() 中使用随机数字吗?(答案)
不行,因为对象的 hashcode 值必须是相同的.参见答案获取更多关于 Java 中重写 hashCode() 方法的知识.
64)Java 中,Comparator 与 Comparable 有什么不同?(答案)
Comparable 接口用于定义对象的自然顺序,而 comparator 通常用于定义用户定制的顺序.Comparable 总是只有一个,但是可以有多个 comparator 来定义对象的顺序.
65)为什么在重写 equals 方法的时候需要重写 hashCode 方法?(答案)
因为有强制的规范指定需要同时重写 hashcode 与 equal 是方法,许多容器类,如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定.
以上就是达内培训给大家做的内容详解,更多关于IT的学习,请继续关注达内培训