KDX*_*DX2 3 java sorting list arraylist data-structures
我遇到了以下问题。我有一个 ArrayList(1) 的 ArrayLists(2)。我需要做的是,对结构进行排序,以便 ArrayLists(2) 的第一个元素按照 ArrayList(1) 的升序排列。澄清:
输入:
3, 8, 6
2, 14, 205, 44, 1
1, 3
Run Code Online (Sandbox Code Playgroud)
输出:
1, 3
2, 14, 205, 44, 1
3, 8, 6
Run Code Online (Sandbox Code Playgroud)
看看它如何仅根据第一个值对行进行排序。
目前,为我定义数组列表的数组列表的方式是:
List<List<Integer>> graph = new ArrayList<List<Integer>>();
// and I add elements to it likewise
graph.get(currentIndex).add(new ArrayList<Integer>());
Run Code Online (Sandbox Code Playgroud)
我使用 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)));
Run Code Online (Sandbox Code Playgroud)
这是用于Integer获取 a Comparator,这是该sort()方法需要按某些自定义标准进行排序的内容。在这种情况下,我们告诉它通过比较两个任意项目来对Listof进行排序,方法是获取它们的第一个项目并像通常比较 s 一样比较它们。Lists graphgraphInteger
请注意,这假设 中的所有项目graph 都有第一个项目。
| 归档时间: |
|
| 查看次数: |
3145 次 |
| 最近记录: |