我有一个包含下一个数据的ArrayList:coordX
(int)、coordY
(int)、长度
(int)、位置
(String)。我按长度
字段对此数组进行排序。如果长度与提交的位置
相等,我如何赋予优先级(优先级将具有具有水平位置的长度)。例如,给定输入:
coordX = 1 , coordY = 0 , length = 2 , position - vertical
coordX = 5 , coordY = 3 , length = 2 , position - horizontal
coordX = 1 , coordY = 6 , length = 4 , position - horizontal
coordX = 3 , coordY = 6 , length = 1 , position - "1x1"
输出应为:
coordX = 1 , coordY = 6 , length = 4 , position - horizontal
coordX = 5 , coordY = 3 , length = 2 , position - horizontal
coordX = 1 , coordY = 0 , length = 2 , position - vertical
coordX = 3 , coordY = 6 , length = 1 , position - "1x1"
以下是我所拥有的:
public static void insertionSort(ArrayList<sort> srt) {
int i,j;
for (i = 1; i < srt.size(); i++) {
sort tmp = srt.get(i);
j = i;
while ((j > 0) && (srt.get(j - 1).length > tmp.length)) {
srt.set(j, srt.get(j - 1));
j--;
}
srt.set(j, tmp);
}
}
List<YourClass> list = new ArrayList<>();
下面的代码是这样工作的。
Comparator.comparing(YourClass::getLlong).反转()
按降序对长度字段进行排序。. thenComping(YourClass::getPotion)
按词法顺序对位置进行排序。 list.sort(Comparator.comparing(YourClass::getLength).reversed()
.thenComparing(YourClass::getPosition));
// or with no getters
list.sort(Comparator.comparing((YourClass cl) -> cl.length).reversed()
.thenComparing((YourClass cl) -> cl.position));
坐标类的可能结构。
class YourClass {
int length;
public String position;
int coordX;
int coordY;
public int getLength() {
return length;
}
public String getPosition() {
return position;
}
public int getCoordX() {
return coordX;
}
public int getCoordY() {
return coordY;
}
}
问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。
问题内容: 我有一个从排序的csv创建的以下列表 我实际上想按两个条件对列表进行排序:首先按字段1中的值,然后按字段2中的值。我该怎么做? 问题答案: 像这样:
问题内容: 我有这样的数组 如何按return_fare asc和one_way_fare asc排序值? 我尝试了array_multisort()但最终却得到了混乱的数据。 Asort仅适用于一维数组,我需要按两个或多个值进行排序,我如何才能像SQL中那样实现此功能,按field1 asc,field2 asc排序? 问题答案: 是正确的函数,您必须以某种方式搞砸了: 如果您在PHP的手册页上
我试图实现对存储在列表中的对象字段值的排序。 我找到了下面的解决方案来比较字符串,但是我如何比较字符串值并相应地排序? 我想先排序"Y"状态值然后"N"
问题内容: 如何按其字段之一(例如或)对对象数组进行排序? 问题答案: 使用usort,这是从手册改编而成的示例: 您还可以将任何callable用作第二个参数。这里有些例子: 使用匿名函数(来自PHP 5.3) 从班级内部 使用箭头函数(来自PHP 7.4) 另外,如果要比较数字值,则应使用“比较”功能。
问题内容: 比方说你有一个的对象。 如果它们都具有int GoalScored变量,则如何排序?你如何按GoalScored排序? 问题答案: 你可以使用Collections.sort自定义Comparator 。 比较部分也可以这样写: 或者,你可以制作。这定义了所有对象的自然顺序。使用a 更灵活,因为不同的实现可以按名称,年龄等进行排序。