首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

两个list求交集 求不出来,该如何处理

2014-01-22 
两个list求交集 求不出来我用list1取出一个文章对象的集合,用list2也取出一个文章对象的集合,但是当我用li

两个list求交集 求不出来
我用list1取出一个文章对象的集合,用list2也取出一个文章对象的集合,但是当我用list1.retainAll(list2);
之后我再取出list1的时候,list居然没数据。后来我查看了list.size(),结果却是size为0,但是list1与list2确实是有交集啊,为什么取完交集后,交集为空啊?求各位大侠指教。。
[解决办法]
目测可能是list1,list2取的文章对象不是同一个对象,文章对象应该需要重写下equals和hashcode方法
[解决办法]
文章对象重写一下public boolean equals(Object obj);方法,根据自己的条件判断相等。
[解决办法]

引用:
Quote: 引用:

目测可能是list1,list2取的文章对象不是同一个对象,文章对象应该需要重写下equals和hashcode方法

你能仔细的再说下吗?谢拉


主要重写文章对象的equals(文章){文章.内容.equals(this.文章内容){return true;}else{return false}}
这里根据你需要怎么样就认为文章相同就去做相应的判断
hashcode方法也重写一下不需要做修改
楼主可以在网上搜下 java 比较对象相等的 很多
[解决办法]
兄弟,你估计搞错这个方法的作用了哦。

retainAll (包含将保留在此列表中的元素的 collection)


public static void main( String[] args )
    {
    List<String> list1=new ArrayList<String>();
    list1.add("1");
    list1.add("2");
    list1.add("3");
    list1.add("4");
    
    List<String> list2=new ArrayList<String>();
    list2.add("2");
    list2.add("4");
    list2.add("6");
    
    if(list1.retainAll(list2)){
    //此处List1 只会存在存在2,4两个元素。
    //retainAll (将会把list2中与list1匹配的数据存放到list1中去 
    System.out.println("writable"+list1.size());
    }else{
    System.out.println( "Hello World!" );
    }
    }

热点排行