java 物件String型別屬性排序
阿新 • • 發佈:2018-11-08
方法一:內部類實現comparator介面
程式碼演示
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class B{
String name;
String date;
}
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
B a [] = new B[ n]; //宣告一個物件陣列
for (int i = 0; i < n; i++) {
a[i] = new B(); //分配記憶體等操作
a[i].name = in.next();
a[i].date = in.next();
}
//從小到大大排序
Arrays.sort(a, new Comparator<B>() { //內部類
@Override
public int compare(B o1, B o2) {
return o1.date.compareTo(o2.date);
}
});
for (int i = 0; i < n; i++) { //輸出
System.out.print(a[i].name+" ");
System.out.println(a[i].date);
}
}
}
輸入
5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20
結果
James 1814/09/05
Tom 1814/09/06
Steve 1967/11/20
John 2001/05/12
Ann 2121/01/30
方法二:實現comparable介面
程式碼演示
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class A implements Comparable<A>{ //實現comparable介面,複寫comparato方法
String name;
String date;
@Override
public int compareTo(A a) {
if (this.date.compareTo(a.date) == -1)
return 1;
else
return -1;
}
}
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
A a [] = new A[n];
for (int i = 0; i < n; i++) {
a[i] = new A();
a[i].name = in.next();
a[i].date = in.next();
}
Arrays.sort(a);//從大到小排序
for (int i = 0; i < n; i++) {
System.out.print(a[i].name+" ");
System.out.println(a[i].date);
}
}
}
輸入
5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20
結果
Ann 2121/01/30
John 2001/05/12
Steve 1967/11/20
Tom 1814/09/06
James 1814/09/05