0

LinkedList を並べ替えようとしているときに問題が発生しました。次のコードを使用しました。

Collections.sort(mylist, new Comparator<String[]>() {
            public int compare(String[] o1, String[] o2) {
                int one= Integer.parseInt(o1[1]);
                int two = Integer.parseInt(o2[1]);
                return one-two;
            }
        });

ここにいくつかの値を入れます:

    thelist.testing("a",1);
    thelist.testing("b",5);
    thelist.testing("c",5);
    thelist.testing("d",5);
    thelist.testing("e",7);
    System.out.println(thelist);

私はこれらの結果を持っています: a:1,b:5,c:5,d:5,e:7

アイテムの番号が同じ場合、出力を次のようにしたい:a:1、d:5、c:5、b:5、e:7

4

2 に答える 2

2

ただ行う:

Collections.sort(mylist, new Comparator<String[]>() {  
            public int compare(String[] o1, String[] o2) {  
                if(o1[1].equals(o2[1]){  
                   return -(o1[0].compareTo(o2[0]));
                }  

                int one= Integer.parseInt(o1[1]);
                int two = Integer.parseInt(o2[1]);
                return one-two;
            }
        });

コード例:

List<String[]> mylist = new ArrayList<String[]>();  
mylist.add(new String[]{"a","1"});  
mylist.add(new String[]{"b","5"});  
mylist.add(new String[]{"c","5"});  
mylist.add(new String[]{"d","5"});  
mylist.add(new String[]{"e","7"});  

出力:

[a, 1]  
[d, 5]  
[c, 5]  
[b, 5]   
[e, 7]  
于 2013-02-10T20:56:05.287 に答える
1

最近追加されたものを最初に追加したい場合は、並べ替える前にリストを逆にします。Java リストの並べ替えは安定しており、等しい項目の順序が維持されます。並べ替える前に、同じ値の項目を対象の順序に並べることを目指す必要があります。

于 2013-02-10T20:54:00.547 に答える