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

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

Java中ArrayList的交并

Java中ArrayList的交并

回首憶惘然 2019-07-02 10:34:01
Java中ArrayList的交并是否有辦法這樣做?我在找,但找不到。另一個(gè)問題:我需要這些方法來過濾文件。有些是AND過濾器和一些是OR過濾器(就像集合論中的那樣),所以我需要根據(jù)所有文件和保存這些文件的UnitedArrayList/Intersects ArrayList進(jìn)行過濾。我應(yīng)該使用不同的數(shù)據(jù)結(jié)構(gòu)來保存文件嗎?還有什么能提供更好的運(yùn)行時(shí)的嗎?
查看完整描述

3 回答

?
MM們

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

這里是一個(gè)沒有使用任何第三方庫的簡單實(shí)現(xiàn)。主要優(yōu)勢(shì)retainAllremoveAlladdAll這些方法不修改輸入到方法的原始列表。

public class Test {

    public static void main(String... args) throws Exception {

        List<String> list1 = new ArrayList<String>(Arrays.asList("A", "B", "C"));
        List<String> list2 = new ArrayList<String>(Arrays.asList("B", "C", "D", "E", "F"));

        System.out.println(new Test().intersection(list1, list2));
        System.out.println(new Test().union(list1, list2));
    }

    public <T> List<T> union(List<T> list1, List<T> list2) {
        Set<T> set = new HashSet<T>();

        set.addAll(list1);
        set.addAll(list2);

        return new ArrayList<T>(set);
    }

    public <T> List<T> intersection(List<T> list1, List<T> list2) {
        List<T> list = new ArrayList<T>();

        for (T t : list1) {
            if(list2.contains(t)) {
                list.add(t);
            }
        }

        return list;
    }}


查看完整回答
反對(duì) 回復(fù) 2019-07-02
?
鳳凰求蠱

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

收藏(ArrayList也是如此)有:

col.retainAll(otherCol) // for intersectioncol.addAll(otherCol) // for union

如果接受重復(fù),則使用列表實(shí)現(xiàn);如果不接受重復(fù),則使用SET實(shí)現(xiàn):

Collection<String> col1 = new ArrayList<String>(); // {a, b, c}

// Collection<String> col1 = new TreeSet<String>();

col1.add("a");

col1.add("b");

col1.add("c");


Collection<String> col2 = new ArrayList<String>(); // {b, c, d, e}

// Collection<String> col2 = new TreeSet<String>();

col2.add("b");

col2.add("c");

col2.add("d");

col2.add("e");


col1.addAll(col2);

System.out.println(col1); 

//output for ArrayList: [a, b, c, b, c, d, e]

//output for TreeSet: [a, b, c, d, e]


查看完整回答
反對(duì) 回復(fù) 2019-07-02
?
達(dá)令說

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

這篇文章相當(dāng)古老,但它是谷歌在尋找這個(gè)話題時(shí)第一次出現(xiàn)。

我想使用Java 8流(基本上)在一行中進(jìn)行相同的更新:

List<T> intersect = list1.stream()
    .filter(list2::contains)
    .collect(Collectors.toList());List<T> union = Stream.concat(list1.stream(), list2.stream())
    .distinct()
    .collect(Collectors.toList());

如果有人有更好/更快的解決方案,請(qǐng)告訴我,但是這個(gè)解決方案是一個(gè)很好的線性程序,可以很容易地包含在方法中,而無需添加不必要的助手類/方法,并且仍然保持可讀性。


查看完整回答
反對(duì) 回復(fù) 2019-07-02
  • 3 回答
  • 0 關(guān)注
  • 778 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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