2をマージし、重複リストを削除するには、[ターン]

 オリジナルます。https://my.oschina.net/jack90john/blog/1493170

何度も仕事は2つのリストをマージし、重複したコンテンツを削除する必要があります。これは非常に簡単な操作で、ここでは、ストリームを使用して、この操作を完了しようとしたレコードは主です。

    java8より多くの従来のアプローチは、またとないのセット内容は、それが自動的に重くなりますので、セットリストに2を追加することである前に、その後、セットリストは、次のコードを回します:

        設定<文字列>を設定= 新しい HashSetの<> リスタ)。
        set.addAll(ListBの)。
        一覧 <文字列>リスト= 新しい ArrayListを<> セット); 
        System.out.println(リスト);

 

これを行うには、合併後のリストとは、重いの結果です。

    java8が発生した後、我々はより便利で効率的なアプローチを持っている私たちは、ストリームでこの操作を完了できるようにすることです、次のように、コードは次のとおりです。

一覧<文字列>集める= Stream.of(LISTA、ListBの)
                .flatMap(コレクション::ストリーム)
                .distinct()
                .collect(Collectors.toList());

 

結果は、このように私たちが望む最終的な結果を得て、あなたは明らかにストリームを介し完成したコードはよりシンプルかつスムーズに見えます見ることができます。

ヒント:あなたがマージしたい場合は、そのオーバーライドが等しいとhashCodeメソッドに注意してください主題です。

添付ファイル:

参照の完全なコード、。

輸入 java.utilの。* ;
輸入java.util.stream.Collectors。
輸入java.util.stream.Stream。

パブリック クラスは、{コンバイン

    パブリック 静的 ボイドメイン(文字列[]引数){ 

        文字列[] ARR1 = { "A"、 "B"、 "C"、 "D"、 "E"、 "F"を}。
        リスト LISTA = <文字列> 新しいのArrayList <> は、Arrays.asList(ARR1)); 

        文字列[] ARR2 = { "D"、 "E"、 "F"、 "G"、 "H" }。
        一覧 ListBの= <文字列> 新しいのArrayList <> 配列。
asList(ARR2))。
        セット <文字列> =セットHashSetの<> リスタ)。
        set.addAll(ListBの)。
        一覧 <文字列>リスト= 新しい ArrayListを<> セット); 
        System.out.println(リスト); 

        一覧 <文字列>集める= Stream.of(LISTA、ListBの)
                .flatMap(コレクション::ストリーム)
                .distinct()
                .collect(Collectors.toList()); 
        System.out.println(収集)
    } 

}

 

おすすめ

転載: www.cnblogs.com/zdd-java/p/11269455.html