gpt4 book ai didi

java - 一个例子来说明 Java 中不可修改集合的这一点?

转载 作者:行者123 更新时间:2023-12-01 18:41:28 25 4
gpt4 key购买 nike

我正在阅读 Cay S. Horstmann 和 Gary Cornell 所著的Core Java Volume I - basics(第 9 版)。这是书中的一段我不明白的内容。如果您能用一个简单的例子来演示它的含义,那就太好了。谢谢

List<String> staff = new LinkedList<>();
.....
lookAt(Collections.unmodifableList(staff));
.....
.....
.....

paragraph:undmodifyingCollection 方法返回一个集合,其 equal 方法不会调用基础集合的 equals 方法。相反,它继承了对象类的 equals 方法,该方法只是测试对象是否相同。如果将集合或列表转变为集合,则无法再测试相同的内容。 View 以这种方式运行是因为相等性测试在此层次结构级别上没有明确定义。 View 以相同的方式处理哈希码方法。 但是,unmodifyingSet 和 unmodifyingList 方法使用底层集合的 equals 和 hashCode 方法。

最佳答案

通常,不是同一列表但具有相同内容的两个列表被视为相等。两个具有相同内容的不可修改列表同样相等。

另一方面,两个不可修改的集合并不只是因为它们具有相同的内容而相等。

        List<Integer> list1 = new ArrayList<Integer>();
list1.add(Integer.valueOf(1));
list1.add(Integer.valueOf(2));
List<Integer> list2 = new LinkedList<Integer>();
list2.add(Integer.valueOf(1));
list2.add(Integer.valueOf(2));
//True!
System.out.println(list1.equals(list2));

List<Integer> unModList1 = Collections.unmodifiableList(list1);
List<Integer> unModList2 = Collections.unmodifiableList(list2);
//True!
System.out.println(unModList1.equals(unModList2));

Collection<Integer> unModColl1 = Collections.unmodifiableCollection(list1);
Collection<Integer> unModColl2 = Collections.unmodifiableCollection(list2);
//False
System.out.println(unModColl1.equals(unModColl2));

关于java - 一个例子来说明 Java 中不可修改集合的这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com