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