首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个用Java在unmodifiableCollection上演示这一点的例子?

一个用Java在unmodifiableCollection上演示这一点的例子?
EN

Stack Overflow用户
提问于 2013-11-06 19:16:54
回答 2查看 199关注 0票数 0

我在读Core Java Volume I - fundamentals (9th edition) by Cay S. Horstmann and Gary Cornell。这是我不懂的书上的一段。如果你能用一个简单的例子来演示它的含义,那就太好了。谢谢

代码语言:javascript
复制
List<String> staff = new LinkedList<>();
.....
lookAt(Collections.unmodifableList(staff));
.....
.....
.....

段落: undmodifiableCollection方法返回一个集合,该集合的equal方法不调用基础集合的equals方法。相反,它继承了object类的equals方法,后者只是测试对象是否相同。如果将集合或列表转换为仅集合,则不能再测试相同的内容。视图以这种方式工作,因为在此层次结构级别上没有很好地定义等式测试。视图以同样的方式对待哈希代码方法。但是,unmodifiableSet和unmodifiableList方法使用基础集合的相等方法和hashCode方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 19:24:33

通常,两个不相同但内容相同的列表被认为是相等的。两个内容相同的不可修改列表也是相同的。

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

代码语言:javascript
复制
        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));
票数 2
EN

Stack Overflow用户

发布于 2013-11-06 19:24:17

代码语言:javascript
复制
List<String> list1 = new ArrayList<String>();
list1.add("foo");
List<String> list2 = new ArrayList<String>();
list2.add("foo");

System.out.println("Are lists equal: " + list1.equlas(list2));
System.out.println("Are unmod collections equal: " + 
  Collections.unmodifiableCollection(list1).equals(
  Collections.unmodifiableCollection(list2)));
System.out.println("Are unmod lists equal: " + 
  Collections.unmodifiableList(list1).equals(
  Collections.unmodifiableList(list2)));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19820811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档