2017-08-08 14 views
0

私は、Javaの整数リストの特定の要素を並べ替える簡単な方法を探しています。例えばJava - リストの先頭で特定の整数を移動するにはどうすればいいですか?

は、私が要素を含むリストを持っている:

0,1,2,3,4,5,6,7,8,9,10,0,2,2,2,3,3,6,6,6,... 

私は常にすべての持っている必要があり「6」、その後、全ての出発要素として「7」すべての「3」を、他の整数を注文か否か。だから、期待される結果は次のようになります。

6,6,6,7,3,3,3,0,1,2,4,5,8,9,10,0,2,2,2,... 
+1

私はあなたが探しているかわからないんだけど。期待した結果であなたの質問を編集できますか? – tobifasc

+1

カスタムコンパレータを用意し、何でもしてください。 – Thomas

+0

カスタマイズされたコンパレータは可能でしょうか? – prime

答えて

2

であなたのリストを並べ替える:

class CustomSorting<T> implements Comparator<T> { 

    private List<T> orderList; 

    public CustomSorting(T ... elements) { 
     this.orderList = Arrays.asList(elements); 
    } 

    @Override 
    public int compare(T a, T b) { 
     return weight(a) - weight(b); 
    } 

    private int weight(T a) { 
     int index = orderList.indexOf(a); 
     return index >= 0 ? index : Integer.MAX_VALUE; 
    } 
} 

使用法:

List<Integer> list = Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,0,2,2,2,3,3,6,6,6); 

    System.out.println(list); 
    Collections.sort(list, new CustomSorting<>(6,7,3)); 
    System.out.println(list); 

出力:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 2, 2, 2, 3, 3, 6, 6, 6] 
[6, 6, 6, 6, 7, 3, 3, 3, 0, 1, 2, 4, 5, 8, 9, 10, 0, 2, 2, 2] 
1

(それはあなたの問題のように見えるようではなく、文字列など)がすでにリスト内のアイテムを持っている場合は、リストをソートするために、独自のコンパレータを定義することができます。その後、

class Sort { 
    public static int strangeCompare(Integer i1, Integer i2) { 
     return valueOf(i2) - valueOf(i1); 
    } 
    private static int valueOf(Integer i) { 
     switch (i.intValue()) { 
     case 6: return 10; 
     case 7: return 7; 
     case 3: return 3; 
     } 
     return 1; 
    } 
} 

そして、あなたはこのような場合のために、一般的なコンパレータを使用することができます

List<Integer> yourList = //... 
Collections.sort(yourList, Sort::strangeCompare); 
+0

@RobinTopper私は 'return'sはうまくいくと思います;) – daniu

+0

すべてのステートメントには復帰があるので、休憩は必要ありません。後にブレークを追加すると、 "デッドコード"を指すエラーが表示されます。 –

関連する問題