2012-04-23 3 views
2

java.util.LinkedList<Integer>を利用可能な方法で逆にしたいと思います。
が提供された方法で探して、私は次以外のオプション見ることができませんでしたIteratorsjava.util.LinkedListを逆転する最善の方法(可能であれば)

int i = list.size(); 
int pos = 0; 
while(i-- > 1){ 
    Integer n = list.removeLast(); 
    list.add(pos++, n);   
} 

をしかし、確かに良い方法がなければなりません。イテレータの外でリストを修正するのは良い考えではありませんが、新しいリストを作成しなくてもここでどのように使うことができるのか分かりませんでした。
良い方法がありますか?

+0

:あなたはそれを自分でやりたい何らかの理由で、これが最善の方法だ場合

。あなたは検索する必要があります。 – sgowd

答えて

14

使用するインポートjava.util.Collections;

Collections.reverse(list); 
+0

これはリンクされたリストの場合に最適化されていますか? –

+1

はい、それはRandomAccessリストとリンクされたリストを区別します。ソースを調べてください; –

2

を参照してください。

Collections.reverse(yourList);

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#reverse%28java.util.List%29を参照してください。これについて多くの質問が既にあります

List<T> reversed = new LinkedList<T>(); 
while(!yourList.isEmpty()) reversed.add(yourList.removeLast()); 
+0

2番目の例が適切ではありません – Cratylus

+0

その中には何も配置されていません。これらは、彼らがあなたに与えている単なる汎用ソリューションであり、どのリストでも動作します。しかし残念なことに、周りを見回した後、LinkedListでその場で行うことはできません。 [ソースコード](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/LinkedList.java)で自分を探すことができます。リストのバックボーンを形成する 'Entry'オブジェクトを得る方法はありません。 –

+0

@ user384706実際には、apiメソッドが実装されています(申し訳ありませんが、私の使用例は間違いです)。 –

関連する問題