读书人

怎么在ArrayList集合中求出它的补集

发布时间: 2012-01-15 22:57:48 作者: rapoo

如何在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);
}

读书人网 >J2SE开发

热点推荐