我遇到了以下问题。我有一个 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
graph
的 List
进行排序通过获取他们的第一个项目并像通常比较 Integer
一样比较它们。
请注意,这假设 graph
中的所有项目都有第一个项目。
关于java - 按每个子列表中的第一个数字排序 List<List<Integer>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52956573/