我有一个ArrayList,其中包含下一个数据:coordX、coordY、长度、位置(位置可以有3种类型:垂直、水平或1x1)。使用插入方法,我按长度对其进行降序排序。如果长度等于具有水平位置的长度值,我如何给予优先级。对于给定的输入:
(1;0) , length = 2 , position - vertical
(1;6) , length = 4 , position - horizontal
(3;4) , length = 3 , position - horizontal
(3;6) , length = 1 , position - 1x1
(4;0) , length = 1 , position - 1x1
(5;3) , length = 2 , position - horizontal
(6;7) , length = 2 , position - vertical
(7;5) , length = 2 , position - horizontal
输出应为:
(1;6) , length = 4 , position - horizontal
(3;4) , length = 3 , position - horizontal
(5;3) , length = 2 , position - horizontal
(7;5) , length = 2 , position - horizontal
(1;0) , length = 2 , position - vertical
(6;7) , length = 2 , position - vertical
(3;6) , length = 1 , position - 1x1
(4;0) , 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);
}
for(sort e : srt) {
System.out.println("("+e.coordX+";"+e.coordY+")"+" , length= "+e.length+" , position - "+e.pozitie);
}
}
这部分代码只负责按长度排序。
尝试以下方法:
你需要先检查长度,然后如果它们相等,检查位置。
while ((j > 0) && (srt.get(j - 1).length < tmp.length
|| (srt.get(j - 1).length == tmp.length
&& srt.get(j - 1).position
.compareTo(tmp.position) > 0))) {
srt.set(j, srt.get(j - 1));
j--;
}
问题内容: 我有很多对象。 如何按名称和年龄先后按字母顺序对该数组排序? 您将使用哪种算法? 问题答案: 你可以使用以下方法: 现在按名称排序,然后按年龄排序。 “从字典上比较两个字符串”-来自docs。 是本机库中的静态方法。它会进行实际的排序,你只需要提供一个即可定义应该如何比较列表中的两个元素:这是通过提供你自己的方法实现来实现的。
我有对象数组。 如何按名称和年龄按字母顺序对该数组进行排序? 你会使用哪种算法?
我被一个简单的问题困住了;如何在ed实体上调用。基本上,我正试图通过JPA标准实现以下目标: 我有以下几点: 如何通过d.name,c.name使用来实现
下一个示例比较器将对不包含任何双名的对象的其余集合进行排序: 第二个比较器正确地根据对象的年龄值对其进行排序,但它允许使用双重名称,我不明白这一点,因为外部的if-语句已经检查了两个对象的名称是否相等。为什么会这样?
我有一个我正在制作的纸牌游戏的高分数组列表。对于这个arraylist可以存储的分数数量需要有一个有限的限制,系统的用户可以定义这个限制(假设现在是10个)。arraylist中的对象中的字段是玩家的名称(字符串)、他们的分数(int)和玩家的(几乎)唯一的ID(Long,System.CurrentTimeMillis())。arraylist应该按分数排序,其中分数最低的是最好的。但是,如果a
要按升序对其进行int排序,我可以使用: 我怎样才能按照递减的顺序来做呢?