2016-09-23 9 views
1

私は2つのStudentオブジェクトのリストを持っています。生徒オブジェクトは次のとおりです。2つのリストをオブジェクトフィールドで比較する

Student 
int id 
int class id 
String name 
int age 

1つのリストには、classId、name、およびageフィールドが入力された生徒オブジェクトがあります。次にそれらをデータベースに挿入します。このオブジェクトには、dbスキーマによって割り当てられた整数が格納されたIDを持つ同じオブジェクトのコレクションが返されます。 DB操作が成功したかどうかを確かめるために、これらの2つのリストを可能な限りベストにしたいと考えています。私はこれを行う2つの方法を考えることができます。 id以外のすべてのフィールドを使用して、入力リスト内のすべての生徒オブジェクトと出力リストを一致させます。または、入力リストの各生徒のIDに出力リストの値を手動で入力します。両方の方法は実装がかなり汚れているので、私はそれを行うためのきれいな方法があることを望んでいましたか?たとえば、最初のオプションでは、入力と出力の両方のコレクションを並べ替えてから、最初のコレクションを繰り返し、各フィールドの出力コレクションにインデックスを比較することができます。

+0

問題はなんですか?データベースはあなたが挿入したのと同じオブジェクトを返しますが、IDが入力されていれば、はい?なぜあなたはそのリストを使用できませんか? –

+0

@ cricket_007どのように(idなし)入ってくるオブジェクトのリストと出てくるオブジェクトのリスト(ID付き)を比較しますか? –

+0

あなた自身の 'Comparator'を定義することはできますが、私はそれらを全く比較する必要は全くありません。 –

答えて

0

生徒に.equals(Object o)メソッドを上書きさせることができます。

public class Student { 

    private int id; 
    private int classId; 
    private String name; 
    private int age; 

    @Override 
    public boolean equals(Object obj) { 
     if (this == obj) 
      return true; 
     if (obj == null) 
      return false; 
     if (getClass() != obj.getClass()) 
      return false; 
     Student other = (Student) obj; 
     if (age != other.age) 
      return false; 
     if (classId != other.classId) 
      return false; 
     if (name == null) { 
      if (other.name != null) 
       return false; 
     } else if (!name.equals(other.name)) 
      return false; 
     return true; 
    } 


} 

次に、あなたはそうのような二人の学生を比較することができます。

Student s1 = ...; 
Student s2 = ...; 

if(s1.equals(s2)) { 
    //Do this when they are equal 
} 

これは、等価性をチェックするためにきれいな方法で、Javaの機能のすべては、このオーバーライドは、equalsメソッドを呼び出します。リストと共に使用することもできます。

List<Student> studentList = ...; 
Student s1 = ...; 

if(studentList.contains(s1)) { 
    //Do this when s1 is in the list 
} 

ご不明な点がある場合や質問が誤解されている場合はお知らせください。

+0

Studentオブジェクトである警告は、他の場所で使用されているため、既に定義されているequalsメソッドに触れませんそれのすべてのフィールドを比較する –

+0

私はあなたの目標の検証ですか?つまり、データベースに挿入する統合テストを書いていて、挿入が機能することを確認することを選択していますか? –

+0

ええ、thats正確に私の目標 –

関連する問題