同じ名前で異なる年齢(値)のオブジェクトが2つありますが、これらのオブジェクトをマップに追加して重複を削除しようとしましたが、削除されません。異なる変数を含む重複オブジェクトの削除
package teeestserrr;
public class two {
private String name;
private String age;
public two(String name, String age){
this.age = age;
this.name = name;
}
public String getName(){
return name;
}
public String getAge(){
return age;
}
public String toString(){
return name + " " + age;
}
}
結果は次のとおりです:
[john, chan, john]
[chan, john, john]
私も作ってみました。これは、オブジェクトタイプのために使用されるクラスがある
two ab = new two("john", "20");
two ac = new two("chan", "30");
two ad = new two("john", "34");
ArrayList<two> ae = new ArrayList<>();
public void adding(){
ae.add(ab);
ae.add(ac);
ae.add(ad);
System.out.println(ae);
}
public void removeDuplicate(){
Set<two> lhs = new HashSet<>();
lhs.addAll(ae);
ae.clear();
ae.addAll(lhs);
System.out.println(ae);
}
public static void main(String args[]){
one five = new one();
five.adding();
five.removeDuplicate();
}
:これは私がテストしていたモデルのコードですtoString
は名前だけを返しますが、重複を削除するために使用されるマップはそのような場合でも機能していないようです。私は理解していないし、根本的な問題を特定することはできません。どんな助けもありがとうございます。
クラス 'two'で' equals'と 'hashCode'をオーバーライドする必要があります – Eran
Eranです。 HashSetはその操作のために2つのメソッドに依存しています(したがって、HashSetという名前)。これらの2つの方法の実装方法に関するガイダンスを見つけるには、お気に入りの検索エンジンを使用してください。それはあなたのIDEがあなたのためにそれらを生成することさえできるかもしれません。 –