我正在创建一个方法来添加到包含人物对象的ArrayList,该人物对象具有名称,地址和年龄。它应该从最低到最高排序。我的工作只适用于最后一个地方或不是空的,我怎么能以不同的方式编写我的代码?
public void addAgeSorted(Person p){
int a = 0;
while(p.getAge() >= this.plist.get(a).getAge() ){
a++;
}
this.plist.add(a,p);
}
答案 0 :(得分:2)
如果您使用的是Java 8或更高版本,则可以使用比较器,只需添加您的人员,然后按年龄对列表进行排序。
plist.sort(Comparator.comparing(Person::getAge));
答案 1 :(得分:0)
看看你想做什么:
in
为什么不使用prioryty队列?
'A' 'B'
这是正确的集合,因为它会在您插入元素后为您排序...
答案 2 :(得分:0)
根据人的年龄编写比较器并使用它。
public long BLZ = 12345678l;
public long KNr = 1234567890l;
public String landCode = "1314";
long fedor = Long.parseLong(String.valueOf(BLZ) + String.valueOf(KNr) +
landCode + "00");
答案 3 :(得分:0)
Collections.sort(personList, new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return p1.getAge().compareTo(p2.getAge());
}
});
这将符合您的要求
答案 4 :(得分:0)
如果我做得对,你想在特定索引处将对象添加到已经排序的人员列表中。您可以通过添加条件检查来处理逻辑失败的两种情况:
public void addAgeSorted(Person p){
if(plist.isEmpty()){
this.plist.add(p);
}
//if age of person to add higher than all in the list
else if(p.age > plist.get(plist.size()-1).getAge()) {
this.plist.add(p);
}
else{
int a = 0;
while(p.getAge() >= this.plist.get(a).getAge() ){
a++;
}
this.plist.add(a,p);
}
}