[解決済み】2つの異なるリストが全く同じ要素を含んでいるかどうかを調べる簡単な方法?
質問
標準的なJavaライブラリで、2つのListが全く同じ要素を含んでいるかどうかを調べる最も簡単な方法は何ですか?
2つのListが同じインスタンスかどうかは問題ではなく、Listの型パラメータが異なっても問題ないはずです。
例
List list1
List<String> list2;
// ... construct etc
list1.add("A");
list2.add("A");
// the function, given these two lists, should return true
きっと、私の顔をじっと見ている何かがあるのでしょう :-)
EDIT: 明確にするために、私はEXACT同じ要素と数を、順番に探していたのです。
どのように解決するのですか?
順番を気にするのであれば、equalsメソッドを使えばいいのです。
list1.equals(list2)
javadocより。
指定されたオブジェクトと このリストが等しいかどうかを調べます。真を返します。 指定されたオブジェクトが もリストであり、両方のリストが同じ サイズ、および対応するすべてのペアの の要素は等しい。 (2つの要素e1,e2が等しいのは (e1==null ? e2==null : e1.equals(e2)). 言い換えれば、2つの リストは、以下の場合に等しいと定義されます。 同じ要素を同じように含む の順番になります。この定義により equals メソッドが正しく動作する の異なる実装にまたがって リストインターフェイス
もし順番に関係なくチェックしたいなら、すべての要素をSetsにコピーして、できたSetsに対してequalsを使うことができる。
public static <T> boolean listEqualsIgnoreOrder(List<T> list1, List<T> list2) {
return new HashSet<>(list1).equals(new HashSet<>(list2));
}
この方法の限界は、順序だけでなく、重複する要素の頻度も無視されることである。例えば
list1
が ["A", "B", "A"] で、かつ
list2
は、["A", "B", "B"] であった。
Set
のアプローチでは、両者はイコールとみなされる。
順序にはこだわらないが、重複の頻度にはこだわりたい場合は、以下のいずれかの方法があります。
- で行われているように、両方のリスト (またはコピー) を比較する前にソートします。 別の質問に対するこの回答
- にコピーするか、すべての要素を マルチセット
関連
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] Javaコンパイラーエラー:ステートメントではありません
-
[解決済み] Javaでdoubleをfloatに変換する
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み] Java ArrayList - 2つのリストが等しいかどうかを判断するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] Javaでのスキャナが動作しない
-
[解決済み] スリーピング中のスレッドが割り込まれ、データベースへの接続が失われる
-
[解決済み] Java ArrayList - 2つのリストが等しいかどうかを判断するにはどうすればよいですか?