[英]Getting two unique values from two Java Collection objects
我想從兩個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
你能幫幫我嗎?
兩件事情:
你應該看一下Sets。 Java Collection有一些類可以解決這個問題。 想法是你可以只是兩個集合之間的設置差異,你會得到你的答案。
使用'set'存儲數據。 這樣,當您向集合添加元素時,您的集合將具有唯一元素。
請參閱此處的javadoc: http : //docs.oracle.com/javase/1.4.2/docs/api/java/util/Set.html
你有沒有嘗試過...
bag1.removeAll(bag2);
如果你想保持bag1和bag2完整,可以使用Set變量並將bag1
所有值傳遞給Set
,然后檢查contains()
like
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
}
}
使用Set接口中的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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.