1

重複の可能性:
名前に基づいて連絡先の ArrayList を並べ替えていますか?
ArrayList のソート

ArrayListタイプがPersonあり、その人の年齢に基づいて並べ替えたい: person.getAge()

人々のリストが年齢順に並べられるようにするにはどうすればよいですか?

4

4 に答える 4

2
ArrayList<Person> people = . . .;
Collections.sort(people, new Comparator<Person>() {
        @Override
        public int compare(Person o1, Person o2) {
            final int age1 = o1.getAge();
            final int age2 = o2.getAge();
            return age1 < age2 ? -1 : age1 > age2 ? 1 : 0;
        }
    }
);

Java 7 では、代わりに使用できますreturn Integer.compare(age1, age2);

または、Person実装することもできますComparable<Person>。ただし、1 つの属性でのみ並べ替えることができます。

于 2012-12-02T19:24:50.530 に答える
1

コメントを拡張すると、次の行に沿ったものになります。

Collections.sort(personList, new Comparator<Person>() {
    @Override
    public int compare(Person p1, Person p2) {
        return new Integer(p1.getAge()).compareTo(p2.getAge());
    }
});

関連文書

于 2012-12-02T19:24:56.480 に答える
0

属性 Onlycomparatorを使用して比較する を定義します。ageコレクションの並べ替え方法 [ sort(java.util.List, java.util.Comparator) ](http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#コンパレータを受け入れる sort(java.util.List, java.util.Comparator)) 。

        Collections.sort(peopleList, new Comparator<Person>(){
             @Override
             public int compare(Person p1, Person p2) {
                return Integer.valueOf(p1.getAge()).compareTo(p2.getAge());
             }
         });

または、内部でメソッドを使用するため、最適化のために以下を実行することをお勧めします。Integer.compareToInteger.compare

       Collections.sort(peopleList, new Comparator<Person>(){
             @Override
             public int compare(Person p1, Person p2) {
                return Integer.compare(p1.getAge(), p2.getAge());
             }
         });
于 2012-12-02T19:27:46.303 に答える
0
//We can do using TreeMap
//i.e
TreeMap treemap=new TreeMap<int,Person>
//trace over person
for(Person p:YourPersonArrayList)
{
treemap.put(p.getAge(),p);
}
//Finally you get TreeMap which is 
//sorted on Persons age...
于 2012-12-02T19:31:35.917 に答える