का उपयोग करते समय ट्रीसेट से खो गया डेटा मेरे पास निम्न कोड है जो Employees's
को उनके अनुभव के आधार पर सॉर्ट करेगा।तुलनात्मक डेटा
मैं अलग-अलग name
और उसी experience
के साथ 2 कर्मचारियों को जोड़ रहा हूं। मुझे उम्मीद है कि अंत में set
में 2 कर्मचारी होंगे, लेकिन मुझे केवल एक ही मिल रहा है।
मैंने equals
और hashcode
पर भी ओवरराइड किया है, क्या कोई मुझे बता सकता है कि मुझे सेट में केवल एक कर्मचारी क्यों मिल रहा है।
टेस्ट कक्षा
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.junit.Test;
public class SetWithComparator {
@Test
public void testComparatorWithSet() {
Comparator<Employee> comparator =
(emp1, emp2) -> emp1.getYearOFExp().compareTo(emp2.getYearOFExp());
Set<Employee> empSet = new TreeSet<>(comparator);
Employee e1 = new Employee();
e1.setName("Employee-1");
e1.setYearOFExp(12f);
Employee e2 = new Employee();
e2.setName("Employee-2");
e2.setYearOFExp(12f);
empSet.add(e1);
empSet.add(e2);
}
}
मॉडल कक्षा
class Employee {
private String name;
private Float yearOFExp;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Float getYearOFExp() {
return yearOFExp;
}
public void setYearOFExp(Float yearOFExp) {
this.yearOFExp = yearOFExp;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Employee) {
Employee e = (Employee) obj;
return new EqualsBuilder().append(name, e.getName()).isEquals();
} else {
return false;
}
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(name).toHashCode();
}
}
उत्तर के लिए धन्यवाद – Jobin