格式化按字母顺序排列的集合

时间:2012-11-10 20:18:40

标签: java collections linked-list

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

 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);
    }

2 个答案:

答案 0 :(得分:0)

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

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

e.g。

 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");
      }
    }

答案 1 :(得分: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); 
}