按其变量之一对List <Class>进行排序

y2p*_*y2p 7 java

我有一个Class1

public class Class1 {
    public Class(String s, int[] s1, int soc) {
       this.s = s;
       this.s1 = s1;
       this.soc = soc
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个ListClass1(List<Class1>).我希望对此列表进行排序soc,以获得Class1最高的soc第一个

Sco*_*eld 16

使用比较器

Collections.sort(list, new Comparator<Class1>() {
  public int compare(Class1 c1, Class1 c2) {
    if (c1.soc > c2.soc) return -1;
    if (c1.soc < c2.soc) return 1;
    return 0;
  }});
Run Code Online (Sandbox Code Playgroud)

(注意,compare方法返回-1表示"第一个参数在排序列表中排在第一位",0表示"它们是相同的顺序",1表示"第一个参数在排序列表中排在第二位",并且列表被修改按排序方法)

  • 如果一个Class1对象具有soc = Integer.MIN_VALUE,则无法工作. (4认同)