-5
class Employee implements Comparable<Employee> 
{

    public Employee(int id, String name,int salary ,String designation)
    {..}

//ゲッターとセッター

}
 public class TestEmployeeSort
{
     public static void main(String[] args) 
     {
         List<Employee> col = new ArrayList<Employee>();
             Employee one =  new Employee(**2**, "rahul",100, "bc");
         Employee oone =  new Employee(**2**, "sfdful",1300, "bdfsc");
         col.add(one);
         col.add(oone);

     }
}

ここで、オブジェクトの4つのフィールドにid、name、salary、designationという名前が渡されるプログラムを作成しました。arraylistオブジェクトから、「id」という名前の4つのオブジェクトから1つのエンティティを取得し、一意にする必要があります。重複するIDを持つオブジェクトを挿入することはできません...(setの動作と同様ですが、ここでsetを使用したくない)どのように行うことができますか.....コンストラクターでメソッドを作成して「this.id」を渡してみました「重複をチェックするセットで、それでも機能していません???

4

4 に答える 4

3

Setリストではなく、を使用したいようです。

重複する要素を含まないコレクション。より正式には、セットには、e1.equals(e2)のような要素e1とe2のペアは含まれず、最大で1つのnull要素が含まれます。その名前が示すように、このインターフェイスは数学的な集合の抽象化をモデル化します。

于 2012-05-14T08:39:14.027 に答える
3

java.util.Setの代わりに実装を使用してList、重複がないことを確認できます。equalsこれは、IDを比較するために実装する必要があるに依存します。

何かをソートしたい場合は、TreeSet実装を使用できます。

于 2012-05-14T08:41:00.893 に答える
2

ArrayList を拡張するクラスを作成し、add メソッドをオーバーライドすることをお勧めします。そのため、挿入しようとするときは、最初に contains メソッドを呼び出し、既にリストにある場合は false を返します。

@Override
public boolean add(E e){
 if(super.contains(e){
    return false;
 }else{
    super.add(e);
 }
return true;
}
于 2012-05-14T08:45:23.147 に答える
0

ArrayList の使用に固執している場合は、おそらくそれを拡張して独自のadd関数を実装する必要があります。

于 2012-05-14T08:41:31.607 に答える