以下のようなJavaコードだとSetで重複が発生しているように見えます。
Setはadd()した時に重複しなければ、その後は重複を判定されないのでしょうか?
よろしくお願いいたします。
Java
1import java.util.*; 2public class SetExam { 3 public static Set<SetExam> setexams = new HashSet<>(); 4 private String s; 5 public SetExam() { 6 this.s = ""; 7 setexams.add(this); 8 } 9 public void setS(String s) { 10 this.s = s; 11 } 12 public String getS() { 13 return this.s; 14 } 15 @Override 16 public boolean equals(Object o) { 17 if(this == o) return true; 18 if(o instanceof SetExam) 19 return this.getS().equals(((SetExam)o).getS()); 20 return false; 21 } 22 @Override 23 public int hashCode() { 24 return this.s.hashCode(); 25 } 26}
Java
1public class Main { 2 public static void main(String[] args) { 3 SetExam s1 = new SetExam(); 4 s1.setS("1"); 5 SetExam s2 = new SetExam(); 6 s2.setS("1"); 7 System.out.println(s1.equals(s2));//true 8 System.out.println(s1.hashCode());//49 9 System.out.println(s2.hashCode());//49 10 for(SetExam se : SetExam.setexams) { 11 System.out.print(se.getS());//11 12 } 13 } 14} 15
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/25 12:39