オブジェクト配列をソート---Arrays.sort(Object[bean])
5069 ワード
簡単な説明:
並べ替えが必要なクラスはComparableインタフェースを実装し,compareToメソッドを書き換える.
さらにオブジェクト配列ソート(昇順降順)を実現
----------------------------------------------------------------------------------------------------------------------------------
注意:昇順時に書き換えたcompareToメソッドreturn結果を照合
----------------------------------------------------------------------------------------------------------------------------------
実装方法を追加します.
----------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
コードの説明:
例は、オブジェクトのdateプロパティを降順に並べます.
並べ替えが必要なクラスはComparableインタフェースを実装し,compareToメソッドを書き換える.
さらにオブジェクト配列ソート(昇順降順)を実現
----------------------------------------------------------------------------------------------------------------------------------
注意:昇順時に書き換えたcompareToメソッドreturn結果を照合
public int compareTo(impl_Comparable o) {
……………………
if (n > 0) {
// 1 : 。( o.date , this.date)
return 1;
} else {
// -1 : 。( this.date , o.date)
return -1;
}
}
----------------------------------------------------------------------------------------------------------------------------------
実装方法を追加します.
----------------------------------------------------------------------------------------------------------------------------------
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
// Comparable ,
public class Impl_Comparable {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// Date
public Date date = new Date();
public Impl_Comparable(String str) {
try {
date = sdf.parse(str);
} catch (ParseException e) {
}
}
// toString
public String toString() {
return sdf.format(date);
}
public static void main(String[] args) {
// , 3 TestComparable
Impl_Comparable[] c = new Impl_Comparable[] {
new Impl_Comparable("2012-07-12"),
new Impl_Comparable("2012-07-1"),
new Impl_Comparable("2012-12-12"),
new Impl_Comparable("2016-07-12"),
new Impl_Comparable("2016-08-12"),
new Impl_Comparable("2016-07-31"),
new Impl_Comparable("1989-05-01")
};
List<Impl_Comparable> list = Arrays.asList(c);
//
System.out.println(list);
//
Collections.sort(Arrays.asList(c), new Comparator<Impl_Comparable>(){
public int compare(Impl_Comparable o1,Impl_Comparable o2) {
// o1.date o2.date , n>0
long n = o1.date.getTime() - o2.date.getTime();
if (n > 0) {
// -1 : 。( o1.date , o2.date)
return -1;
} else {
// 1 : 。( o2.date , o1.date)
return 1;
}
}
});
//
System.out.println(list);
}
}
----------------------------------------------------------------------------------------------------------------------------------
コードの説明:
例は、オブジェクトのdateプロパティを降順に並べます.
package Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
// Comparable ,
public class impl_Comparable implements Comparable<impl_Comparable> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// Date
public Date date = new Date();
public impl_Comparable(String str) {
try {
date = sdf.parse(str);
} catch (ParseException e) {
}
}
// Comparable , date
public int compareTo(impl_Comparable o) {
// this.date o.date , n>0
long n = date.getTime() - o.date.getTime();
if (n > 0) {
// -1 : 。( this.date , o.date)
return -1;
} else {
// 1 : 。( o.date , this.date)
return 1;
}
}
// toString
public String toString() {
return sdf.format(date);
}
public static void main(String[] args) {
// , 3 TestComparable
impl_Comparable[] c = new impl_Comparable[] {
new impl_Comparable("2012-07-12"),
new impl_Comparable("2012-07-1"),
new impl_Comparable("2012-12-12"),
new impl_Comparable("2016-07-12"),
new impl_Comparable("2016-08-12"),
new impl_Comparable("2016-07-31"),
new impl_Comparable("1989-05-01")
};
//
System.out.println(Arrays.asList(c));
//
Arrays.sort(c);
//
System.out.println(Arrays.asList(c));
}
}