2017-08-17 30 views
0
private static LinkedList<Integer> melhorMoto1 = new LinkedList<>(); 

私は、新しいLinkedListのを作成newLinkedList = melhorMoto1;を使用してCollections.sort(newLinkedList);newLinkedList.equals(melhorMoto1);を行うが、私は再帰関数で働いているとして、newLinkedList = melhorMoto1;が非常に遅い帰属あるような何かを行うことができます知っています。 LinkedListがメソッドなどで注文されているかどうか確認できますか?LinkedListが既に注文されているかどうかはどのように確認できますか?

+4

注文されているかどうかを確認するのは、それを繰り返すだけで簡単ですし、隣接する2つのアイテム間で注文が維持されていることを確認するだけです。 – alfasin

+1

"新しいLinkedListを作成し、newLinkedList = melhorMoto1;を使用します。そのコードは新しいLinkedListを作成せず、melhorMoto1変数に保持されているLinkedListへの参照をnewLinkedListに割り当てます。あなたはおそらく 'LinkedList newLinkedList = new LinkedList <>(melhorMoto1)' – Pshemo

+0

Nopのようなものだと思います。私が 'newLinkedList = melhorMoto1;と言うと私はすでにnewLinkedListを作成しています( 'LinkedList newLinkedList = new LinkedList <>()' ofc)。 – Marcos

答えて

1

Java 8では、List(または他の注文コレクション)の場合、これを達成するためにComparators.isInOrder(Iterable)を使用できます。 、任意Listが昇順にソートされていることを確認し、単にそれを反復し、現在の要素cur、要素の各隣接対に対して以前素子prev以上であることを確認する:

前のJava 7には、それ自身が行います。

降順に変更してください。これには合計チェック数size() - 1が必要です。

+0

ありがとうございます。私はそれを自動的に行う方法を探していました。 – Marcos

+0

組み込みメソッドはありませんが、書き込むのはほんの数行です。それをユーティリティクラスに入れれば、永遠にそれを得ることができます。あなたが本当に "組み込み"を望むなら、ストリームを使って比較する一時的なソートされたリストを作成することができます。例えばlist.equals(list.stream()。sorted()。collect(Collectors.toList() )) ')、これは反復メソッドと比較して非常に非効率的になるでしょう。 @marcos – BeeOnRope

+0

@Marcos - 明らかに私は間違っていました。Java 8には、あなたが望むことを実行する 'Comparators.isInOrder(Iterable)'があります。 – BeeOnRope

関連する問題