我想从两个Collection对象中获取唯一值。我该怎么办?
示例:我们取两个ArrayLists
:
List bag1 = new ArrayList();
List bag2 = new ArrayList();
bag1.add("1");
bag1.add("2");
bag1.add("3");
bag1.add("7");
bag1.add("8");
bag1.add("9");
bag2.add("4");
bag2.add("5");
bag2.add("6");
bag2.add("7");
bag2.add("8");
bag2.add("9");
我需要得到像 - >这样的结果来自bag1
的1,2,3和来自bag2
的4,5,6
你能帮帮我吗?
答案 0 :(得分:1)
两件事:
答案 1 :(得分:0)
你应该看看套装。 Java Collection有一些类可以解决这个问题。想法是你可以只是两个集合之间的集合差异,你会得到你的答案。
答案 2 :(得分:0)
使用'set'存储您的数据。这样,当您向集合添加元素时,您的集合将具有唯一元素。
请参阅此处的javadoc:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Set.html
答案 3 :(得分:0)
bag1.removeAll(bag2);
如果你想保持bag1和bag2完好无损,你可以使用Set变量并将bag1
的所有值传递到Set
,然后检查contains()
Set set = new HashSet();
set.addAll(bag2);
for(Object o: bag1){
if(!set.contains(o)){
// Do whatever you want with bag1 elements
}
}
set.clear();
set.addAll(bag1);
for(Object o: bag2){
if(!set.contains(o)){
// Do whatever you want with bag2 elements
}
}
答案 4 :(得分:0)
使用Set interface中的removeAll
方法定义。
Set intersect = new TreeSet(bag1);
intersect.removeAll(bag2);
List unique1 = Arrays.asList(intersect);
intersect = new TreeSet(bag2);
intersect.removeAll(bag1);
List unique2 = Arrays.asList(intersect);