この記事では、HashSet と LinkedHashSet を使用して ArrayList から重複要素を削除する 2 つの方法を説明します。
ArrayList は、Java で最も一般的に使用されるコレクション型の 1 つです。これにより、複数の null 要素や重複要素を柔軟に追加でき、要素の挿入順序が維持されます。コーディングの際、構築された ArrayList から重複要素を削除する必要があるという要件に遭遇することがよくあります。
方法 1: HashSet を使用して ArrayList 内の重複要素を削除します
この方法では、HashSet を使用して重複要素を削除します。ご存知のとおり、HashSet では要素の重複は許可されません。 HashSet のこのプロパティを使用して、構築された ArrayList 内の重複要素を削除します。ただし、このアプローチには欠点があります。つまり、ArrayList 内の要素の挿入順序が削除されます。これは、重複した要素を削除した後、要素が間違った順序で挿入されることを意味します。まずは次の例を見てみましょう。
import java.util.ArrayList; import java.util.HashSet; public class MainClass { public static void main(String[] args) { //Constructing An ArrayList ArrayList<String> listWithDuplicateElements = new ArrayList<String>(); listWithDuplicateElements.add("JAVA"); listWithDuplicateElements.add("J2EE"); listWithDuplicateElements.add("JSP"); listWithDuplicateElements.add("SERVLETS"); listWithDuplicateElements.add("JAVA"); listWithDuplicateElements.add("STRUTS"); listWithDuplicateElements.add("JSP"); //Printing listWithDuplicateElements System.out.print("ArrayList With Duplicate Elements :"); System.out.println(listWithDuplicateElements); //Constructing HashSet using listWithDuplicateElements HashSet<String> set = new HashSet<String>(listWithDuplicateElements); //Constructing listWithoutDuplicateElements using set ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set); //Printing listWithoutDuplicateElements System.out.print("ArrayList After Removing Duplicate Elements :"); System.out.println(listWithoutDuplicateElements); } }
出力:
ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP] ArrayList After Removing Duplicate Elements :[JAVA, SERVLETS, JSP, J2EE, STRUTS]
出力に注意してください。重複した要素を削除すると、要素が再シャッフルされることがわかります。掲載順に並べられなくなりました。重複した要素を削除した後に要素の挿入順序を維持したい場合、この方法はお勧めできません。重複した要素を削除した後に要素の挿入順序が変更されないようにする別の方法があります。それはLinkedHashSetを使うことです。
方法 2: LinkedHashSet を使用して ArrayList 内の重複要素を削除します
この方法では、LinkedHashSet を使用して ArrayList 内の重複要素を削除します。ご存知のとおり、LinkedHashSet では要素の挿入順序を維持しながら、要素の重複は許可されません。 LinkedHashSet のこれら 2 つのプロパティにより、ArrayList 内の重複要素を削除した後も要素の挿入順序が維持されることが保証されます。以下の例を参照してください。
import java.util.ArrayList; import java.util.LinkedHashSet; public class MainClass { public static void main(String[] args) { //Constructing An ArrayList ArrayList<String> listWithDuplicateElements = new ArrayList<String>(); listWithDuplicateElements.add("JAVA"); listWithDuplicateElements.add("J2EE"); listWithDuplicateElements.add("JSP"); listWithDuplicateElements.add("SERVLETS"); listWithDuplicateElements.add("JAVA"); listWithDuplicateElements.add("STRUTS"); listWithDuplicateElements.add("JSP"); //Printing listWithDuplicateElements System.out.print("ArrayList With Duplicate Elements :"); System.out.println(listWithDuplicateElements); //Constructing LinkedHashSet using listWithDuplicateElements LinkedHashSet<String> set = new LinkedHashSet<String>(listWithDuplicateElements); //Constructing listWithoutDuplicateElements using set ArrayList<String> listWithoutDuplicateElements = new ArrayList<String>(set); //Printing listWithoutDuplicateElements System.out.print("ArrayList After Removing Duplicate Elements :"); System.out.println(listWithoutDuplicateElements); } }
出力:
ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP] ArrayList After Removing Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, STRUTS]
出力に注目してください。 ArrayList 内の重複要素を削除した後も、要素の挿入順序が維持されていることがわかります。
以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。
ArrayList 内の重複要素を削除する 2 つの Java メソッドについては、PHP 中国語 Web サイトの関連記事に注目してください。