カスタムクラスのリストをequals()とhashCode()を定義せずに比較する方法


  1. リストのサイズと要素の比較: リスト同士のサイズが異なる場合、それらは異なるリストとみなすことができます。また、要素を1つずつ比較していくこともできます。以下は例です:
public boolean compareLists(List<MyClass> list1, List<MyClass> list2) {
    if (list1.size() != list2.size()) {
        return false;
    }
    for (int i = 0; i < list1.size(); i++) {
        if (!list1.get(i).equals(list2.get(i))) {
            return false;
        }
    }
    return true;
}
  1. リストをソートして比較: リストをソートしてから比較する方法もあります。ソート後に要素を一致させることで、リスト同士が等しいかどうかを判断できます。以下は例です:
public boolean compareLists(List<MyClass> list1, List<MyClass> list2) {
    if (list1.size() != list2.size()) {
        return false;
    }
    List<MyClass> sortedList1 = new ArrayList<>(list1);
    List<MyClass> sortedList2 = new ArrayList<>(list2);
    Collections.sort(sortedList1);
    Collections.sort(sortedList2);
    return sortedList1.equals(sortedList2);
}
  1. リストの文字列表現を比較: リストのtoString()メソッドを使用して、リストの文字列表現を比較する方法もあります。以下は例です:
public boolean compareLists(List<MyClass> list1, List<MyClass> list2) {
    return list1.toString().equals(list2.toString());
}

上記の方法は、equals()とhashCode()を定義する手間を省き、カスタムクラスのリストを比較するためのシンプルで簡単な方法です。ただし、注意点として、これらの方法はリスト内の要素が順序に依存しない場合にのみ使用することができます。要素の順序が重要な場合は、ソートする方法を選択してください。