我有一个名为 MyCollege (Driver) 的类和一个名为 LinkedList 的类。我有在 LinkedList 中创建的方法,但我不确定如何调用它们。我希望能够以排序顺序或输入顺序将对象输入到链接列表中,具体取决于用户选择的内容。
问问题
1143 次
2 回答
0
默认情况下List
,实现按插入顺序维护元素。对于您想要插入订单的地方,您很好。但是,如果您想要不同的顺序,则必须使用不同的集合(例如)或在添加元素后TreeSet
对其进行排序。List
如果元素是Comparable
并且您希望它们基于此按顺序排序,您可以使用TreeSet
(如果您没有任何重复项)或使用Collections.sort(list)。如果您需要不同的订单,则需要实现Comparator。然后,您可以将其传递给TreeSet
构造函数或Collections.sort
.
于 2013-11-06T10:25:48.243 回答
0
使用一个新int
变量来存储用户的订单偏好:
int order;
现在将您的for
循环更改为:
for(int i = 0; i < 10; i++)
{
//ask to input details
System.out.println("-------------------------------------------------");
System.out.println("Please input the information below:");
System.out.println("-------------------------------------------------");
System.out.println("Please input the student's name : ");
name = scan.nextLine();
System.out.println("Please input the student's number : ");
number = scan.nextLine();
System.out.println("Please input the student's course code : ");
courseCode = scan.nextLine();
System.out.println("Please input the student's course entry year : ");
entryYear = scan.nextInt();
scan.nextLine();
System.out.println("Please input the order you want to put Student in the List
[1 for Sorted and any other number to add at the end of this list ] : ");
order = scan.nextInt();
s1 = new Student(name, number, courseCode, entryYear); //create new student
if(order == 1){
list.sorted(s1);
} else {
list.add(s1); //add s1 to list
}
}
编辑:
您可以定义 aComparator
按学号对列表中存在的元素进行排序:
class Student {
...
private static final Comparator<Student> STU_COMP = new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getStudentNo().compareTo(s2.getStudentNo());
}
};
...
}
现在您可以使用Collections.sort使用此比较器对列表进行排序:
Collections.sort(list, STU_COMP);
于 2013-11-06T10:26:35.130 回答