我有一个从员工类读入的姓氏的集合。是否可以在排序后组织排序名称的输出?我需要一个类似于我已经注释掉的行的输出,而不是通过逗号“[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);
}
答案 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);
}