如何在不使用Collections.sort等排序方法的情况下,基于姓氏对LinkedList进行排序

时间:2013-03-25 23:00:23

标签: java sorting

我有一个名为recordInformation的LinkedList,它包含每个索引的对象。该对象由名字,姓氏,numnbr和由空格分隔的余额组成。所以recordInformation看起来像  [[firstName lastName number balance] [fname lastname number bal]]。 每次我向recordInformation添加记录时,我都会根据姓氏对列表进行排序。我试图编写一个方法,但是当我用另一个方法输出列表时,索引没有改变。比较是否是检查字母顺序的正确方法?

public void sortRecords(LinkedList list){
    if (list.size()==1)
        return;

    Object obj = recordInformation.getLast();
    String sortVar = obj.toString();
    String[] varArray = sortVar.split(" ");

    for (int i=0;i<list.size();i++){
        Object obj1 = recordInformation.get(i);
        String compare = obj1.toString();
        String[] compareArray = compare.split(" ");
        //varArray[1] and compareArray[1] hold the last names
        if ((varArray[1].compareTo(compareArray[1]))<0){
            recordInformation.add(i,obj);
            recordInformation.remove(list.size()-1);
        }

    }

}

2 个答案:

答案 0 :(得分:0)

如果从一开始就控制了列表,为什么不将元素插入到正确的位置?

我的意思是如果有A,你需要把C,然后把A-> C,如果B来,那么把A-> B-> C。 这样你就不会使用Collections.sort(或任何类型)。

答案 1 :(得分:0)

如果您想维护排序顺序,同时在插入时做很多事情,那么LinkedList是最后使用的数据结构之一。

你所追求的是Red-Black树。在java中,它实现为java.util.TreeMap