我需要在比較兩個列表時獲取非常見元素的列表。 例如: -如何使用java從兩個列表中獲取非常見元素的列表?
List<String> readAllName = {"aaa","bbb","ccc","ddd"};
List<String> selectedName = {"bbb","ccc"};
在這裏,我想從readAllName名單在另一個列表( 「AAA」, 「CCC」, 「DDD」)不常見的元素。 不使用remove()和removeAll()。
我需要在比較兩個列表時獲取非常見元素的列表。 例如: -如何使用java從兩個列表中獲取非常見元素的列表?
List<String> readAllName = {"aaa","bbb","ccc","ddd"};
List<String> selectedName = {"bbb","ccc"};
在這裏,我想從readAllName名單在另一個列表( 「AAA」, 「CCC」, 「DDD」)不常見的元素。 不使用remove()和removeAll()。
假設預期輸出爲aaa, ccc, eee, fff, xxx
(所有不常見的項目),您可以使用List#removeAll
,但你需要使用兩次獲得無論是在名稱中NAME2的項目,但不併在NAME2而不是在項目名稱:
List<String> list = new ArrayList<> (name);
list.removeAll(name2); //list contains items only in name
List<String> list2 = new ArrayList<> (name2);
list2.removeAll(name); //list2 contains items only in name2
list2.addAll(list); //list2 now contains all the not-common items
根據您的編輯,你不能使用remove
或removeAll
- 在這種情況下,你可以簡單地運行兩個循環:
List<String> uncommon = new ArrayList<>();
for (String s : name) {
if (!name2.contains(s)) uncommon.add(s);
}
for (String s : name2) {
if (!name.contains(s)) uncommon.add(s);
}
不使用remove()和removeAll() – Arunprasad
@Arun爲什麼不呢?如果有任何限制,您需要在問題中說清楚。 – assylias
bcz我試過了,它在@postconstruct方法中不起作用,但是它能夠正常工作,我不知道是什麼? – Arunprasad
您可以使用番石榴圖書館來做到這一點。 Sets類有一個difference方法
你將不得不運行它兩次,我想從雙方獲得所有的差異。
aaa和ccc如何? – assylias
ccc怎麼樣?它是否也應該列入最終名單? – assylias
ccc如何不常見? – Ajeetkumar