如何在ArrayList集合中求出它的补集,谢谢。
在第一个ArrayList表中存放多条记录A,B ,C,D,E.....等对象,
在第二个ArrayLsit表中存放第一个表中的子集,如(A,E等对象)。
我如何能得出第一个ArrayList表的补集,即第一个ArrayList表中除去第二个ArrayList后剩余的结果
------解决方案--------------------挨个匹配呗,你手动是怎么来的,就让机器怎么来
------解决方案--------------------最容易的是想到循环套循环,但是显然效率不行。下面有没有高人?
------解决方案--------------------用hashset去实现
------解决方案--------------------list1.removeAll(list2);
------解决方案--------------------List <Character> list1 = new ArrayList <Character> ();
for (char c = 'A '; c <= 'E '; c++)
list1.add(new Character(c));
List <Character> list2 = new ArrayList <Character> ();
list2.add(new Character( 'A '));
list2.add(new Character( 'E '));
list1.removeAll(list2);
不过这个操作是直接从list1里面删除的,如果需要保留list1的元素的话,需要预先手工拷贝一份
------解决方案--------------------第二个ArrayLsit 调用其迭代器进行循环。
然后第一个ArrayLsit 换成ListedList 使用remove()方法
最后在把ListedList 换回ArrayLsit
注: ListedList的添加删除要比ArrayLsit效率快
ArrayLsit 的查询要比ListedList 效率快
------解决方案--------------------不太明白你的意思.看看这个对你有没有帮助
http://community.csdn.net/Expert/topic/5319/5319310.xml?temp=.1032526
------解决方案--------------------回复人:Dan1980() ( 五级(中级)) 信誉:98 2007-01-26 12:45:54 得分:0
list1.removeAll(list2);
===============================
这个不错。加个条件就更好了。
if(list1.containAll(list2)){
list1.removeAll(list2);
}