私は、次のような問題に出くわしました。私はのArrayList(2)のArrayListの(1)を持っています。私は何をする必要があることはArrayListを(1)ダウンして昇順にするのArrayList(2)の最初の要素となるような構造をソートするために、です。明確にするために:
入力:
3, 8, 6
2, 14, 205, 44, 1
1, 3
出力:
1, 3
2, 14, 205, 44, 1
3, 8, 6
それが唯一の最初の値に基づいて行をソートする方法を探してください。
今の配列リストのArrayListのが私のために定義されている方法は次のとおりです。
List<List<Integer>> graph = new ArrayList<List<Integer>>();
// and I add elements to it likewise
graph.get(currentIndex).add(new ArrayList<Integer>());
私はグラフの隣接リストのリストを構築していますので、私はArrayListのを使用していた理由は、私はそれがLinkedListのより効率的な多くのメモリがあることを読んでいるためであると。その両方のいずれかで変更することができるノードの数又はノードごと隣接リストの長さ。行の最初の要素は、start_node
その隣接- 、以下の通りです。私は、このソートを実装する方法を教えていただけますか?
私はそれを理解するように、あなたは、ネストされた各リストの最初の要素により、トップレベルのリストをソートしたいです。これは正しいです?ここで私はそれについて移動する方法を示します。
List<List<Integer>> graph = new ArrayList<List<Integer>>();
// add a bunch of things ...
// ...
// Now, to sort:
graph.sort((x,y) -> Integer.compare(x.get(0), y.get(0)));
これは、使用されInteger
得るためにComparator
何をしている、sort()
この方法は、いくつかのカスタム条件でソートする必要があります。この場合、我々は、ソートすることを言っているList
のをLists
graph
二つの任意の項目を比較することによって、graph
彼らの最初の項目を取得し、あなたが通常の比較として、それらを比較することにより、Integer
秒。
これは、内のすべての項目を前提としていますgraph
持っている最初の項目を。