Treeset只打印一个元素,并且应该按升序获取名称

时间:2015-08-06 19:08:32

标签: java

import java.text.ParseException;
import java.util.Iterator;
import java.util.TreeSet;
public class Test {
    public static void main(String[] args) throws ParseException {
        TreeSet<Employee> ts = new TreeSet<Employee>();
        Employee emp1 = new Employee();
        Employee emp2 = new Employee();
         emp1.setName("CDD");
         emp2.setName("BCC");
         ts.add(emp1);
         ts.add(emp2);
         Iterator<Employee> itr=ts.iterator();
            while(itr.hasNext()){
                Employee c=itr.next();
                System.out.println(c.getName());
            }
    }
}

public class Employee implements Comparable<Employee> 
{   
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int compareTo(Employee arg0) {
        // TODO Auto-generated method stub
        return 0;
    }



}

我将自定义Employee对象添加到树集中,以便按升序获取名称。

我有这个程序。

你可以告诉我:

  1. 为什么只展示一个元素
  2. 如何按升序排列名称

1 个答案:

答案 0 :(得分:3)

您需要创建一个compareTo方法,该方法无法比较所有Employee s的等值,这是compareTo方法通过始终返回0所做的工作。当TreeSet(或任何Set)找到与该集合中已存在的内容“相等”的对象时,它将不会添加该对象。

您可以通过比较他们的名字来比较Employees

@Override
public int compareTo(Employee arg0) {
    return this.name.compareTo(arg0.name);
}

或者您可以创建自己的compareTo实现,当此对象“小于”对象参数时返回负数,0当此对象“等于”对象参数时,根据{{​​3}}

,当此对象“大于”对象参数时为正数