2

各インデックスのオブジェクトを含むrecordInformationというLinkedListがあります。オブジェクトは、スペースで区切られた名、姓、数字、およびバランスで構成されます。したがって、recordInformationは[[firstName lastName number balance] [fname lastnamenumberbal]]のようになります。recordInformationにレコードを追加するたびに、名前に基づいてリストを並べ替えます。メソッドを作成しようとしましたが、別のメソッドでリストを出力しても、インデックスが変更されていません。compareToはアルファベット順をチェックする正しい方法ですか?

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);
        }

    }

}
4

2 に答える 2

0

最初からリストを管理しているのなら、正しい場所に要素を挿入してみませんか?

つまり、Aがあり、Cを入力する必要がある場合は、A-> Cを入力し、Bが来る場合は、A->B->Cを入力します。そうすれば、Collections.sort(または任意のソート)を使用しなくなります。

于 2013-03-25T23:44:30.463 に答える
0

ソートされた順序を維持し、同時に挿入を行う場合LinkedListは、これが最後に使用するデータ構造の1つです。

あなたが求めているのは赤黒木です。Javaでは、java.util.TreeMapクラスとして実装されます

于 2013-03-26T00:01:59.883 に答える