-2

我有一个从员工类读入的姓氏集合。是否可以在排序之后组织排序名称的输出?我需要一个类似于我已注释掉的行的输出,而不是我现在从 Collection 中获得的以逗号分隔的姓氏“[Name1, Name2, Name3...]”的通用单行输出...

 public void alpha1()
    {
     LinkedList<String> alphalist = new LinkedList<String>();
     ListIterator<Employee> iterate = list.listIterator(0);
    // System.out.println("First Name" + "\t" + "Last Name" + "\t" + "Salary");
     while (iterate.hasNext())
      {
           emp = iterate.next();

       alphalist.add(emp.getlastname());
      }
      Collections.sort(alphalist, new Comparator<String>() {
         @Override
         public int compare(String o1, String o2) {
             return Collator.getInstance().compare(o1, o2);
         }
     });
     System.out.println(alphalist);
    }
4

2 回答 2

0

我认为最好ComparatorEmployee对象上创建并对原始集合本身进行排序。

对集合进行排序后,使用Employee对象本身迭代并打印您的集合。

例如

 public void alpha1()
   {
       Collections.sort(list, new Comparator<Employee>() {
        @Override
        public int compare(Employee o1, Employee o2) {
          return o1.getLastName().compareTo(o2.getLastName());
        }
      });

      ListIterator<Employee> iterate = list.listIterator();
      while (iterate.hasNext())
      {
        emp = iterate.next();
        System.out.println("First Name" + "\t" + "Last Name" + "\t" + "Salary");
      }
    }
于 2012-11-10T20:23:43.190 回答
0

与其存储姓氏字符串列表,更好的方法是存储员工对象并按姓氏对它们进行排序。

您可以Comparable在您的Employee类中实现以定义其自然排序。然后,您制作alphalist一个员工列表,并使用Collections.sort(alphalist).

public class Employee implements Comparable<Employee> {
    ...

    @Override
    public int compareTo(Employee emp) {
        return this.getLastName().compareTo(emp.getLastName());
    }
}

然后,您的新alpha1()方法:

public void alpha1() {
    LinkedList<Employee> alphalist = new LinkedList<Employee>();
    ListIterator<Employee> iterate = list.listIterator(0);
    while (iterate.hasNext()) {
        alphalist.add(iterate.next());
    }
    Collections.sort(alphalist);
    System.out.println(alphalist); 
}
于 2012-11-10T20:25:41.263 回答