第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在列表中查找不常見元素的最佳方法

在列表中查找不常見元素的最佳方法

有只小跳蛙 2022-06-30 11:12:53
我有String說列表類型的列表aLista,bListb第一個(gè)列表可能有最大10 elements但bListb可能有數(shù)千甚至更多元素?,F(xiàn)在我必須找到所有aList不在bListb. 這是我的方法List<String> aLista = Arrays.asList("Anil","Abhishek","Ritu");List<String> bListb = Arrays.asList("g","o","e","Abhishek","Ritu");List<String> result3 = aLista.stream().filter(al -> !bListb.contains(al)).collect(Collectors.toList());System.out.println(result3);// output Anil但我不確定性能,因?yàn)閎Listb以后可能會(huì)有很多元素。所以我才知道這樣做的最佳方式。謝謝你的時(shí)間。
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

你可以用一套。與列表的 O(n) 相比,HashSet 的包含是 O(1),因此如果您經(jīng)常需要運(yùn)行包含,則永遠(yuǎn)不要使用列表。

Set<String> bSet = new HashSet<>(bListb);
aLista.stream().filter(a -> !bSet.contains(a)).collect(Collectors.toList());


查看完整回答
反對(duì) 回復(fù) 2022-06-30
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您不關(guān)心重復(fù)項(xiàng),請(qǐng)嘗試以下操作:

Set<String> uncommon = new HashSet<>(aLista);
uncommon.removeAll(bListb);


查看完整回答
反對(duì) 回復(fù) 2022-06-30
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

由于aLista大小非常有限并且bListb可能很大,因此您應(yīng)該轉(zhuǎn)換aLista為 a Set,而不是bListb.


Set<String> missing = new HashSet<>(aLista);

for (String s : bListb) {

    if (missing.isEmpty())

        break;

    missing.remove(s);

}

bListb如果已找到所有值,該代碼甚至?xí)搪返D(zhuǎn)換bListb為 aSet將不允許這種短路邏輯。


查看完整回答
反對(duì) 回復(fù) 2022-06-30
  • 3 回答
  • 0 關(guān)注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)