3 回答

TA貢獻1828條經驗 獲得超3個贊
拿去:
String[] myno1 = new String[]{"01", "02", "03", "04", "05", "06", "07",
"08", "09", "10", "11", "12", "13", "14", "15"};
String[] myno2 = new String[]{"01", "03", "15"};
// use LinkedHashSet to preserve order
Set<String> set1 = new LinkedHashSet<>(Arrays.asList(myno1));
Set<String> set2 = new LinkedHashSet<>(Arrays.asList(myno2));
// find duplicates
Set<String> intersection = new LinkedHashSet<>();
intersection.addAll(set1);
intersection.retainAll(set2);
// remove duplicates from both sets
Set<String> result = new LinkedHashSet<>();
result.addAll(set1);
result.addAll(set2);
result.removeAll(intersection);
System.out.println("Result: " + result);
Result: [02, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14]

TA貢獻1829條經驗 獲得超9個贊
因為您必須從另一個列表中刪除項目。HashSet<>()用于從同一數組列表中刪除重復項。例如,如果列表包含 15 個兩次和 3 個兩次,那么它將在列表中保留一次。
這是代碼
foreach(String str : stringList){
stringList1.remove(str);
}

TA貢獻1850條經驗 獲得超11個贊
如果你使用 Java 8 或 +,你可以使用這個:
String[] myno1 = new String[] { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15" };
String[] myno = new String[] { "01", "03", "15" };
List<String> stringList = new ArrayList<>(Arrays.asList(myno));
List<String> stringList1 = new ArrayList<>(Arrays.asList(myno1));
stringList.addAll(stringList1);
List<String> newList = stringList.stream()
.filter(string -> Collections.frequency(stringList, string) == 1)
.collect(Collectors.toList());
System.out.println("=== s:" + newList);
不需要那么多地更改您的代碼。創建了一個沒有插入重復元素的新列表。輸出是:
=== s:[02, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14]
添加回答
舉報