2017-03-03 28 views
0

私はカスタムArrayListを持っています。このArrayListを整数配列に関して特定の順序で並べ替える必要があります。 例えばarrayListをJavaで再配置

List<String> test = new ArrayList();   
    test.add("red"); 
    test.add("green"); 
    test.add("blue"); 
int [] X = {2,0,1}; 

このArrayListのw.r.t Xアレイを再アレンジ。第二インデックスのすなわちアイテムが3位に2位と第一項目に第一、0番目の項目に来るべき

出力は次のようになります。

blue 
red 
green 

私は、forループを使用してそれを行う方法を知っているだけかどうかを知りたいですこれより優れた解決法があります。

+2

を使用することができます。そして、そのクラスの 'ArrayList'を作成し、' ID'に基づいてカスタムコンパレータでそれらをソートしますか? –

+0

IDでソートできる新しいラッパークラスを作成する以外に、これを行うためのきれいな方法はありません。 –

+0

実際には、その質問の重複はありません。この場合は、要素をカスタム順序で移動する必要があります。 – RudiDudi

答えて

0

マップを作成し、整数を文字列値にマップできます。

参照配列を反復し、あなたの順序に基づいてリストします。

スニペット:

Map<Integer,String> maps = new HashMap<Integer,String>(); 
maps.put(1,"Red"); 
maps.put(2,"White"); 

for(Integer a : values){ 
    System.out.println(maps.get(a)); 
} 
+0

TreeMapがより適しています –

+0

不要です。このアプローチでは、ソートメカニズムは使用しません。 値をマッピングしていて、配列の順序に基づいて値を表示します。 TreeMapを導入すると、HashMapと比較して値を追加する際に複雑さが増します。 – sitakant

+0

しかし、入力はマップではなく、出力もコンソールではなくテキストでなければなりません。あなたのソリューションは要件を満たしていません – Jens

-1

あなたはフィールドとして `ID`と` color`を持つクラスを作成する方法について

どう
Collections.swap(test,1,2); 
Collections.swap(test,2,3); 

ドキュメントHere

+0

引数downvote – RudiDudi