1. 程式人生 > >java 物件String型別屬性排序

java 物件String型別屬性排序

方法一:內部類實現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