我有一个带有我的班级档案(姓名和评级)的ArrayList,我需要在我的Arraylist中为这个信息订购asc属性。
例如:
我需要这个:
最后我想得到最好的评分:
我的班级资料:
public class Profile {
private String name;
private int rated;
public Profile(String name,int rated) {
this.name=name;
this.rated=rated;
}
public String getName(){
return name;
}
public int getrated(){
return rated;
}
}
我正在尝试这个,它不起作用:
ArrayList<Profile> aLprofile=new ArrayList<Profile>();
aLprofile.sort(aLprofile.get(0).getrated());
你有另一种方式或任何提示给我。
答案 0 :(得分:2)
您需要将比较器传递给sort方法。因此,请使用Comparator.comparingInt
提供您要将Profile
个实例与。
所以在你的情况下:
comparingInt(p1 -> p1.getRated());
可以用方法参考替换:
aLprofile.sort(comparingInt(Profile::getRated));
<小时/> 但是,如果您只想获得最大值,则无需排序,您可以使用
Collections.max
:
Profile p = Collections.max(aLprofile, comparingInt(Profile::getRated));
答案 1 :(得分:1)
您的班级应该实施Comparable
界面,然后使用Collections.sort
。
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class Profile implements Comparable<Profile> {
private String name;
private int rated;
public Profile(String name,int rated) {
this.name = name;
this.rated = rated;
}
public String getName(){
return name;
}
public int getrated(){
return rated;
}
@Override
public int compareTo(Profile other) {
return (getrated() - other.getrated());
}
public static void main(String[] args) {
List<Profile> aLprofile = new ArrayList<Profile>();
aLprofile.add(new Profile("A", 10));
aLprofile.add(new Profile("B", 8));
aLprofile.add(new Profile("C", 12));
aLprofile.add(new Profile("D", 14));
aLprofile.add(new Profile("E", 6));
Collections.sort(aLprofile);
for(Profile p: aLprofile)
System.out.println(p.getName());
}
}