0

私はJavaクラスを持っています

class Students{
    private String fName;   
    private String lName;
    private String uName;


    public Students(String fName, String lName, String uName) {
            this.fName = fName;
            this.lName = lName;
            this.uName = uName;
     }      

    public String getuName() {
        return uName;
    }
    public void setuName(String uName) {
        this.uName = uName;
    }
    public String getfName() {
        return fName;
    }
    public void setfName(String fName) {
        this.fName = fName;
    }
    public String getlName() {
        return lName;
    }
    public void setlName(String lName) {
        this.lName = lName;
    }

}

これで、オブジェクトが次のように作成されました。

    Students students1 = new Students("har","mat","harmat");
    Students students2 = new Students("pan","son","panson");
    Students students3 = new Students("yogi","jos","yogijos");

    Students students4 = new Students("har","mat","harmat");
    Students students5 = new Students("pan","son","harmat");
    Students students6 = new Students("yogi","jos","someotherUName");
    Students students7 = new Students("yogi","jos","someotherUName2");

これで、これらすべてのオブジェクトがcombinedListに追加されます

List combinedList = new ArrayList<SchoolStudents>();

次の基準に基づいて、このcombinedListから重複するオブジェクトを削除したいと思います。fNameが同じ場合、またはuNameが同じ場合。

4

5 に答える 5

4

それが2人の生徒が等しいかどうかを判断する一般的な基準である場合は、クラスで オーバーライドequalsして、基準に基づいて2人の生徒を等しくすることができます。hashcode

次に、生徒をセット(通常はHashSet )に追加できます。これにより、重複が自動的に削除されます。

于 2012-07-25T14:13:50.853 に答える
1

それらをSet(などの)に保管し、建設時に、基準を満たす、または同じであるにをTreeSet供給します。ComparatorSetfNameuName

(重複の定義は生徒の外部にあると思います。たとえば、異なる時間に異なることを意味します。それが生徒に固有の場合は、@ assyliasの回答の方が理にかなっています)。

于 2012-07-25T14:14:35.457 に答える
1

一意のリストが必要な場合は、Listインターフェイスから何かを使用することをお勧めします。あなたは使用する方が良いでしょうSet

オーバーライド、hashCode()およびクラスequals()のメソッドStudents

于 2012-07-25T14:15:14.830 に答える
1

Studentクラスに実装equals()し、 HashSetを使用して一意性を強制することを提案します。hashCode()

于 2012-07-25T14:16:11.947 に答える
0
public List<User> removeDuplicateFromList(List<User> list){
    int s=0;
    List<User> users=new ArrayList<User>();
    for(User us1 :list){
        for(User us2:users){
        if(us1.getIdUser()==us2.getIdUser()){
            s=1;
        }else{
            s=0;
        }

        }   if(s==0){
            users.add(us1);
        }

    }
    return users;
}
于 2014-06-20T15:01:23.260 に答える