如何用java中的对象对链表进行排序
问题描述:
我用Java中的对象创建了一个链表(通用容器)。我需要重新编写我的插入方法以使列表按键按字母顺序排序。这是到目前为止我的代码:如何用java中的对象对链表进行排序
集装箱:
class Sellbeholder<N extends Comparable<N>, V> implements INF1010samling<N,V> {
private Keeper første;
private int ant = 0;
private class Keeper {
Keeper neste;
N n;
V v;
Keeper(N n,V v) {
this.n = n;
this.v = v;
}
}
这是我的插入方法(我需要重写):
public void PutIn(N n, V v) {
Keeper kep = new Keeper(n,v);
kep.neste = første;
første = kep;
ant++;
这是与人的对象,这是我”中号将在容器(链表):
class Person {
String name;
Person(String n) {
this.name = n;
}
}
而且我这是怎么创造的人,把他们在容器:
Sellbeholder <String,Person> b1 = new Sellbeholder <String,Person>();
Person a = new Person("William");
b1.PutIn("William",a);
任何帮助,我将不胜感激。我知道我需要使用CompareTo-metohod来检查放置对象的位置,但我不确定应如何设置链接列表的结构。我已经开始在这:
for(Keeper nn = første; nn!= null; nn = nn.neste) {
if(nn.n.compareTo(kep.n) > 0) {
//Do something here
答
迭代,直到得到适当的地方:
public void PutIn(N n, V v) {
Keeper kep = new Keeper(n,v);
// you will insert between previous and current
Keeper previous = null;
Keeper current = første;
// loop until you get the right place
while (current != null && ((current.n).compareTo(n) > 0)) {
previous = current;
current = current.neste;
}
// insert your stuff there (if there were no previous, then this is the first one)
if (previous == null) {
første = kep;
} else {
previous.neste = kep;
}
// Set the next Keeper
kep.neste = current;
ant++;
}
这将让你的有序列表。
为什么你不能使用TreeSet而不是原因? http://docs.oracle.com/javase/6/docs/api/java/util/TreeSet.html – anoopelias 2013-02-27 15:22:58
如果你需要一个链表,你可以使用** java.util.LinkedList **,如果你需要一个Map按键排序可以使用** java.util.TreeMap **。 我认为TreeMap可以做你正在寻找的东西。 – 2013-02-27 15:29:31
@anoopelias可能他必须亲自实施它,例如像作业一样。 – gaborsch 2013-02-27 15:31:00