java - 按每个子列表中的第一个数字排序 List<List<Integer>>

标签 java list sorting arraylist data-structures

我遇到了以下问题。我有一个 ArrayLists(2) 的 ArrayList(1)。我需要做的是对结构进行排序,以便 ArrayLists(2) 的第一个元素按升序向下排列 ArrayList(1)。澄清一下:

输入:

3, 8, 6
2, 14, 205, 44, 1
1, 3

输出:

1, 3
2, 14, 205, 44, 1
3, 8, 6

看看它如何仅根据第一个值对行进行排序。

现在arraylists 的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() 方法根据一些自定义标准进行排序所需要的。在这种情况下,我们告诉它通过比较 graph 中的两个任意项来对 Lists graphList 进行排序通过获取他们的第一个项目并像通常比较 Integer 一样比较它们。

请注意,这假设 graph 中的所有项目都第一个项目。

关于java - 按每个子列表中的第一个数字排序 List<List<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52956573/

相关文章:

java - 字符串选择和分配

java - 传递包含空格的 shell 脚本参数作为 java 系统属性

python - 如何将 'yield' 生成器结果存储在 Python 2.7 的列表中?

algorithm - 你能说 (n lg n) 是 O(n^2) 吗?

java - 使用 RequestBodyAdvice 验证 REST 请求

java - Java 中 CKEditor 的集成

c# - C# 列表是否类似于 C++ 列表?

python - 想要在匹配的字符串中添加遗漏的字符串

c++ - 为什么按降序排序与升序排序时快速排序需要更长的时间

c++ - 如何命令坐标对?