我为列表项分配了随机ID号。我有一个包含LinkedList的类,还有一个表示列表中项目的类。这就是我必须做的:LinkedList类中的构造函数应该调用一个方法来构建测试数据列表。这些应该按排序顺序添加到LinkedList中。为LinkedList构建测试数据后,构造函数应该调用一个方法,将列表中的项打印到命令行。
我有大部分代码,只是不知道如何按顺序对ID号进行排序,也不知道如何以正确的顺序将新项目插入列表。以下是我需要编辑的代码,以使这项工作:
public boolean decideToInsert (Makeup ee) {
boolean decision = false;
//code goes here
return decision;
这是LinkedList
package model;
import java.util.LinkedList;
import java.util.ListIterator;
public class MakeupList {
private LinkedList <Makeup> makeList = new LinkedList<>();
public MakeupList(){
this.createMakeList();
this.printMakeList();
}
public void createMakeList(){
makeList.add(new Makeup("Natural Face", "Too Face"));
for (int i = 0; i<10; i++){
addMakeup (new Makeup ("Matte Lipstick", "MAC"));
}
}
public void addMakeup (Makeup newMake){
boolean makeupAdded = false;
boolean insertDecision = false;
ListIterator<Makeup> makeIterator = makeList.listIterator();
while (makeIterator.hasNext()){
insertDecision = makeIterator.next().decideToInsert(newMake);
if (insertDecision == true){
makeList.add(makeIterator.previousIndex(), newMake);
makeupAdded = true;
break;
}
}
if(!makeupAdded){
makeList.add(newMake);
}
}
public void printMakeList(){
ListIterator<Makeup> makeIterator = makeList.listIterator();
while(makeIterator.hasNext()){
System.out.println(makeIterator.next().toString());
}
}
}
您可以使用Comparable<T>
接口和Collections#sort
例如,在Makeup
类中实现Comparable<Makeup>
接口,并且在方法中接收
public int compareTo(Makeup o) {
}
使用Integer#compare(int i1, int i2)
方法比较您的两个id,返回您从Integer比较中收到的值。
然后简单地使用Collections#sort(List<T>)
对列表进行排序。
根据你把i1和i2放进去的顺序,你会收到一个升序或降序列表,所以你可以一直玩下去,直到你做对为止。
编辑当前代码不足以满足您的需求。您必须为LinkedList 添加一些新功能
例如,用于在不同索引中插入对象的函数。用于删除LinkedList中对象的函数。
我建议您创建一个名为Comparator的类,它可以比较两个对象并返回较大的对象。使用具有不同排序算法的比较器。如果你不知道任何排序算法,冒泡排序是最简单的排序方法。
顺便说一句,最好的方法是使用二进制树,如果你知道它是什么。