对我的ArrayList进行排序的正确方法是什么?

时间:2019-01-25 18:40:46

标签: java android sorting arraylist

我有一个名为“ 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>

我想从最高分到最低分

3 个答案:

答案 0 :(得分:2)

您可以通过自定义比较功能进行排序:

Collections.sort(
    list,
    (a, b) -> Integer.compare(b.score, a.score)
);

您会注意到b.scoreInteger.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)的包装器类存储得分变量对于此工作很重要!