【发布时间】:2020-07-14 12:40:57
【问题描述】:
我得到了一个 ArrayList,其中包含下一个数据:coordX (int) , coordY (int) , length (int), position (String)。我按 length 字段对该数组进行排序.如果长度与position 字段相等(优先级将具有具有水平位置的长度),我如何给予优先权。例如,给定输入:
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);
}
}
【问题讨论】:
-
首先,有
Collections.sort()。有了它,它看起来像:Collections.sort(list, Comparator.comparingInt(s -> s.length).thenComparing(s -> s.position)). -
您应该改用
Collections.sort并编写一个 Comparator 或让您的类实现 Comparable -
这能回答你的问题吗? Javascript sort array by two fields
-
@povisenko 这个问题是关于 Java 的,链接到 Javascript 的副本是不正确的。
标签: java