この記事では、主に Java で配列から重複データを削除する方法を紹介します。配列から重複を削除するためのいくつかの一般的な方法、実装原理、および関連する注意事項を例の形式で詳細に分析します。この記事では、Java が配列から重複データを削除するメソッドを実装する例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
少し前にインタビューで質問されました: 配列に重複した要素がある場合、重複を削除するにはどのような方法を使用できますか?しばらくは 1 つの方法を使用することを考えていましたが、後で情報を確認したところ、それを実現するための方法が多数あることがわかりました。ここでは、より簡単な方法をいくつかまとめます。
1. Listコレクションを使用して
int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } System.out.println("去除重复后的list集合"+list);
去除重复后的list集合[5, 6, 8, 7, 4]
2. hashSet または TreeSet を使用して
Integer[] nums = { 5, 5, 6, 6, 6, 8, 8, 7, 11, 12, 12 }; // HashSet hset = new HashSet(Arrays.asList(nums)); TreeSet<Integer> hset = new TreeSet<Integer>(Arrays.asList(nums)); Iterator i = hset.iterator(); while(i.hasNext()){ System.out.println(i.next()); }
5 6 7 8 11 12
そのうちの 1 つは、配列を List オブジェクトに変換することです。このメソッドは ArrayList 型のオブジェクトを返します。この ArrayList クラスは java.util.ArrayList クラスではなく、Arrays クラスの静的な内部クラスです。
TreeSet は、要素の重複を防ぐだけでなく、並べ替えなどの機能を備えたコレクションを実装することもできます。オブジェクト要素がセットに追加されると、特定の比較ルールに従って順序付けられたオブジェクトのシーケンスに自動的に挿入されます。 Arrays.asList()
int[] nums = { 5, 6, 6, 6, 8, 8, 7 }; List<Integer> numList = new ArrayList<Integer>(); for (int i : nums) numList.add(i); Set<Integer> numSet = new HashSet<Integer>(); numSet.addAll(numList); System.out.println(numSet);
を実装すると、出力結果:
[5, 6, 7, 8]
重複データも削除され、ソートが実装されていることがわかります。
HashSet
HashSetには以下の特徴があります
1) 要素の順序は保証されず、順序は変更される可能性があります2)同期されません
3) コレクション要素は null にすることができますが、null を 1 つだけ入れることができます
要素が HashSet コレクションに格納されると、HashSet はオブジェクトの hashCode() メソッドを呼び出して hashCode 値を取得しますオブジェクトの値を取得し、hashCode 値に従って HashSet 内のオブジェクトの格納場所を決定します。
TreeSet は、コレクション要素がソートされた状態であることを保証できる、SortedSet インターフェイスの唯一の実装クラスです。 TreeSet は、自然ソートとカスタマイズされたソートという 2 つのソート方法をサポートしています。このうち、自然ソートはデフォルトのソート方法です。 TreeSet に追加されるのは、同じクラスのオブジェクトである必要があります。
TreeSet が 2 つのオブジェクトが等しくないと判断する方法は、2 つのオブジェクトが equals メソッドを通じて false を返すか、CompareTo メソッドによる比較で 0 が返されないことです自然な並べ替え
自然な並べ替えは CompareTo (オブジェクトobj) ソート対象要素のメソッド 要素間の大小関係を比較し、要素を昇順に並べます。
Java は、compareTo(Object obj) メソッドを定義する Comparable インターフェイスを提供します。このメソッドは、このインターフェイスを実装するオブジェクトのサイズを比較できます。 obj1.compareTo(obj2) メソッドが 0 を返した場合、比較されている 2 つのオブジェクトが等しいことを意味し、正の数を返した場合は、obj1 が obj2 より大きいことを意味します。 obj1 が obj2 より小さいということです。 2つのオブジェクトのequalsメソッドに対して常にtrueを返す場合、2つのオブジェクトのcompareToメソッドの戻り値は0を返すはずですカスタマイズされた並べ替え
自然な並べ替えはコレクション要素のサイズに基づいています。並べ替えをカスタマイズするには、Comparator インターフェイスを使用し、int Compare(T o1,T o2) メソッドを実装する必要があります。
最も重要な点:
1. TreeSet は 2 差分ツリーによって実装され、Treeset 内のデータは自動的にソートされ、null 値は許可されません。
2. HashSet はハッシュ テーブルによって実装されます。HashSet 内のデータは順序付けされていません。ただし、両方の値を繰り返すことはできません。データベース。 3. HashSet では、挿入されるオブジェクトが HashCode() メソッドを実装する必要があります。同じ内容の String オブジェクトは同じハッシュコードを持つため、挿入される内容を繰り返すことはできません。ただし、同じクラスのオブジェクトを異なるインスタンスに配置することはできます。以上がJava配列から重複データを削除する実装方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。