【发布时间】:2017-11-27 19:35:54
【问题描述】:
我有一个 ArrayList:
ArrayList<Object[][]> parents;
其中第 1 列包含整数的 ArrayList,第 2 列包含单个 int。我将父母作为对象的 ArrayList,因为其中的两个对象派生自类对象,而不是转换。
这是我遇到问题的地方,现在我需要按第二列(整数)对父母进行排序,但是在使用 java.util.Arrays.sort 时遇到了问题,因为我收到以下错误:
The method sort(T[], Comparator<? super T>) in the type Arrays is not applicable for the arguments (ArrayList<Object[][]>, new Comparator<Integer[]>(){})
有什么办法可以将第二列转换为整数?我们来自包含更通用对象的 ArrayList 的错误
如果这是不可能的,那么更改代码以便对数组进行排序的最佳方法是什么?
请不要从 int[][] 问题的排序中标记为重复,因为我以前没有在这里看到过这个问题。
谢谢!
编辑 - 根据要求,这是我的 ArrayList 的一个示例
[50, 50, 50, 100, 50, 80, 50], 925
[80, 100, 100, 50, 80, 100], 1300
[50, 100, 100, 50, 100, 100], 1200
忽略第一列,我想按第二列排序,如下所示:
[50, 50, 50, 100, 50, 80, 50], 925
[50, 100, 100, 50, 100, 100], 1200
[80, 100, 100, 50, 80, 100], 1200
对于上下文,第一列是引用玩家在游戏中拥有的物品的数组,第二列是它们的成本(越小越好)。我想按此成本列 (2) 对玩家进行排序,当然他们的物品将与他们一起移动到相同的排序行。结果首先按最小排序,因此在锦标赛选择中(这是一种遗传算法),我可以通过修剪 ArrayList 来“杀死”成本最高的玩家。
【问题讨论】:
-
请添加输入和所需输出的具体示例
-
你做错了。使用类。使用 List
类型的字段和 int 类型的字段定义一个类 Parent。然后使用 List ,并使用 Comparator 对它们进行排序。 Java 是一种面向对象的语言。使用类和对象。 -
@JB Nizet 说了什么。此外,错误消息说程序需要一个数组和一个比较器,比较器应该能够比较数组中的对象。相反,您传递的是
ArrayList(不是数组)和Integer[]类型的比较器。
标签: java arrays sorting arraylist