按顺序添加到arraylist(年龄)

时间:2017-09-26 15:02:31

标签: java arraylist

我正在创建一个方法来添加到包含人物对象的ArrayList,该人物对象具有名称,地址和年龄。它应该从最低到最高排序。我的工作只适用于最后一个地方或不是空的,我怎么能以不同的方式编写我的代码?

public void addAgeSorted(Person p){
 int a = 0;
 while(p.getAge() >= this.plist.get(a).getAge() ){
  a++;
  }
 this.plist.add(a,p);
}

5 个答案:

答案 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);
    }
}