ComparableとComparatorによる集合ソート
6539 ワード
ソートの実装方法はCollectionsを通過しなければならない.sort()実装 区別する ComparableはCollectionを介しています.sort(obj),objはComparableインタフェースを実現し,comparareTo(T o)メソッドを複写し,戻り値が正,ゼロ,負に基づいてソートを実現する. の戻り値は正であり、呼び出しオブジェクトは入力オブジェクトよりも大きい. の戻り値は負であり、呼び出しオブジェクトは入力オブジェクトより小さい である.の戻り値はゼロで、 に等しい.
コード#コード#
需要:-学生をソートします.-まず成績順に昇順し、成績は同じで、年齢順にソートします.-Comparableインタフェースで実現
Comparableは堅苦しいので柔軟ではありません. ComparatorはCollectionsを通過する.sort(List list,Comparator
コード#コード#
集合はソートを実現したい,1.Collectionsしかないsort()メソッド実装,2.あるいはHashSetで実現します.
配列ソート Arrays.sort()は集合ソートと同じ
コード#コード#
需要:-学生をソートします.-まず成績順に昇順し、成績は同じで、年齢順にソートします.-Comparableインタフェースで実現
// Bean
public class Student implements Comparable{
private String name;
private int age;
private int score;
public Student(String name,int age,int score){
this.name = name;
this.age = age;
this.score = score;
}
public Student(){}
//get set toString
@override
public int compareTo(Student s1){
// this ,
if(this.score > s1.getScore()){
return 1;
}else if(this.score == s1.getScore()){
// , ,this -1
if(this.age > s1.getAge()){
return -1;
}else{
return 1;
}
}else{
return -1;
}
}
}
public class sortStudent{
public static void main(String[] args){
ArrayList list = new ArrayList<>();
list.add(new Student("zhangsan",18,90));
list.add(new Student("lisi",19,60));
list.add(new Student("wangwu",16,100));
list.add(new Student("zhaoliu",17,90));
Collections.sort(list);
}
}
//
{name='lisi', age=19, score=60}
{name='zhangsan', age=18, score=90}
{name='zhaoliu', age=17, score=90}
{name='wangwu', age=16, score=100}
Comparableは堅苦しいので柔軟ではありません.
コード#コード#
public class StringSortTest5 {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Peter");
list.add("Jim");
list.add("Ann");
list.add("Angel Baby");
list.add("Michel Jackson");
list.add("JK");
list.add("Tom");
list.add("Jerry");
//
Collections.sort(list, new
Comparator() {
@Override
public int compare(String o1, String o2) {
// :
int result = o1.length()-o2.length();
if(result==0){
result =o1.compareTo(o2);
}
return result;
}
});
集合はソートを実現したい,1.Collectionsしかないsort()メソッド実装,2.あるいはHashSetで実現します.
配列ソート