我有一个名为“ ergebnisse”的自定义类,其中包含多个字段,其中之一是类型为ips=""
ids=""
while [ "$ids" = "" ]; do
ids=$(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names $ASG --region $REGION --query AutoScalingGroups[].Instances[].InstanceId --output text)
sleep 1
done
for ID in $ids;
do
IP=$(aws ec2 describe-instances --instance-ids $ID --region $REGION --query Reservations[].Instances[].PrivateIpAddress --output text)
ips="$ips,$IP"
done
的得分。
我想按分数对Long
进行排序。
我尝试了很多事情,但大多数都只占一两列。
ArrayList<ergebnisse>
我想从最高分到最低分
答案 0 :(得分:2)
您可以通过自定义比较功能进行排序:
Collections.sort(
list,
(a, b) -> Integer.compare(b.score, a.score)
);
您会注意到b.score
是Integer.compare
的第一个参数。这会颠倒比较的含义,因此列表将按降序排列。
答案 1 :(得分:0)
例如,如果我们有一个课程:
private class Person{
private String name;
private Long score;
}
然后我们可以像这样进行比较:
list.sort(Comparator.comparing(Person::getScore));
或
list.sort((person1, person2) -> person1.getScore().compareTo(person2.getScore()));
答案 2 :(得分:0)
这可以通过多种方式完成。
方法1(传统):
您的自定义类
public class Ergebnisse {
private String name;
private Long score;
//standard getters and setters
}
通过覆盖比较方法来实现比较器接口
class SortbyScore implements Comparator<Ergebnisse> {
@Override
public int compare(Ergebnisse a, Ergebnisse b) {
return b.getScore() - a.getScore();
}
}
然后,每当您希望按得分使用对列表进行排序
Collections.sort(list, new SortbyScore());
方法2(Java 8或更高版本):
只需使用lambda expresson
list.sort((o1, o2) -> o2.getScore().compareTo(o1.getScore()));
*请注意,使用原始类型long(Long)的包装器类存储得分变量对于此工作很重要!