亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ANDROID:刪除重復字符串

ANDROID:刪除重復字符串

臨摹微笑 2023-04-26 15:21:43
我在完全刪除重復字符串時遇到問題List<String>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<String>(Arrays.asList(myno));List<String> stringList1 = new ArrayList<String>(Arrays.asList(myno1));stringList.addAll(stringList1);Set<String> set = new HashSet<>(stringList);stringList.clear();stringList.addAll(set);System.out.println("=== s:" +stringList);但我得到了這個:=== s:[15, 13, 14, 11, 12, 08, 09, 04, 05, 06, 24, 07, 01, 02, 03, 10]我希望結果是這樣的:=== s:[13, 14, 11, 12, 08, 09, 04, 05, 06, 24, 07, 02, 10]
查看完整描述

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]


查看完整回答
反對 回復 2023-04-26
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

因為您必須從另一個列表中刪除項目。HashSet<>()用于從同一數組列表中刪除重復項。例如,如果列表包含 15 個兩次和 3 個兩次,那么它將在列表中保留一次。


這是代碼


foreach(String str : stringList){


stringList1.remove(str);

}


查看完整回答
反對 回復 2023-04-26
?
慕蓋茨4494581

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]


查看完整回答
反對 回復 2023-04-26
  • 3 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號