相关疑难解决方法(0)

为什么我的TreeSet不会添加除第一个元素之外的任何内容?

我在表单中有几个数组:

private static String[] patientNames = { "John Lennon", "Paul McCartney", "George Harrison", "Ringo Starr" };
Run Code Online (Sandbox Code Playgroud)

然后我像这样制作一个TreeSet:

TreeSet<Patient> patTreeSet = new TreeSet<Patient>();
Run Code Online (Sandbox Code Playgroud)

患者是另一类产生"患者"对象的人.然后我遍历我的数组中的每个元素来创建几个患者并将它们添加到我的patTreeSet喜欢这样:

for(int i = 0; i< patientNames.length; i++){
     Date dob = date.getDate("MM/dd/yyyy", patientBirthDates[i]);
     Patient p = new PatientImpl(patientNames[i], patientSSN[i], dob);

     patTreeSet.add(p);
}
Run Code Online (Sandbox Code Playgroud)

但是当我去检查我的patTreeSet.size()时候它只返回"1" - 这是为什么?

我知道我的对象运行良好,因为当我尝试做同样的事情,但ArrayList相反,一切正常.所以我猜我正在使用TreeSet错误.

如果有帮助,Patient会有一个名为getFirstName()的方法,当我尝试执行以下操作时:

Iterator<Patient> patItr = patTreeSet.iterator();

while(patItr.hasNext()){
    System.out.println(patItr.next().getFirstName());

}
Run Code Online (Sandbox Code Playgroud)

然后只有"John"打印,显然不应该这样......所以,我是否完全滥用TreeSet?

在此先感谢您的帮助!

编辑如下

================ PatientImpl Class ====================

public class PatientImpl implements Patient, Comparable{

    Calendar cal = new …
Run Code Online (Sandbox Code Playgroud)

java set treeset

6
推荐指数
1
解决办法
1万
查看次数

TreeSet示例

为什么第三个对象没有被添加到树集中,虽然它是一个不同的?

import java.util.*;

class Student implements Comparable<Student>{
public String fn,ln;
public Student(String fn,String ln){
    this.fn=fn;
    this.ln=ln;
}

//overiding equals

public boolean equals(Object o) {
    if (!(o instanceof Student))
        return false;
    Student s=(Student) o;
    if(this==s)
        return true;
    if(this.fn.equals(s.fn) && this.ln.equals(s.ln))
        return true;
    return false;
}

//overiding hashcode

public int hashCode() {
    return fn.hashCode()+ln.hashCode();
}


//overiding compareTo

public int compareTo(Student o) {

    return this.fn.compareTo(o.fn);
}
  }

public class Practice {


public static void main(String[] args) {
    Student st1=new Student("Girish","J");
    Student st2=new Student("Master","M"); …
Run Code Online (Sandbox Code Playgroud)

java string-comparison treeset

2
推荐指数
1
解决办法
2万
查看次数

证明equals与compareTo齐头并进

这是写在所有的java像样的课程,如果你实现了Comparable接口,你应该(在大多数情况下)覆盖equals以匹配其行为的方法.

不幸的是,在我目前的组织中,人们试图说服我完全相反.我正在寻找最有说服力的代码示例,向他们展示将要发生的所有邪恶.

java equals compareto comparable

1
推荐指数
2
解决办法
790
查看次数

标签 统计

java ×3

treeset ×2

comparable ×1

compareto ×1

equals ×1

set ×1

string-comparison ×1