一 、 java.util.Arrays 類是一個專門提供數組操作的支持類 .
① . public static boolean equals(數組1,數組2) ; 兩個數組彼此相等,就返回true .
② . public static void sort(int[] a) . 對數組元素進行排序. 除此之外還有其他的重載方法.
③ . public static void
sort(Object[] a) .根據元素的自然順序對指定對象數組按升序進行排序。數組中的所有元素都必須實現
Comparable
接口。
eg :
package example;
import java.util.Arrays;
import java.util.Comparator;
class Book implements Comparable<Book>{
private String title;
private double price;
public Book() {
}
public Book(String title,double price){
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public int compareTo(Book o) {
if(this.price > o.price){
return 1;
} else if(this.price < o.price) {
return -1;
}
return 0;
}
@Override
public String toString() {
return "書名 : " + this.title + " ,價格 : " + this.price + "\n";
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
Book b1 = new Book("天龍八部",10);
Book b2 = new Book("西遊記",30);
Book b3 = new Book("射鵰英雄傳",20);
Book books[] = new Book[]{b1,b2,b3};
Arrays.sort(books);
System.out.println(Arrays.toString(books));
}
}
上面的情況要求Comparable 必須在一個類定義的時候就將其實現完整,但是在實際的開發之中也會出現這樣的一種情況:一個類已經開發完成了,並且這個類不能修改了。但是現在突然有了新的要求是:可以進行排序。爲了解決這樣的問題,在Java 裏面又提供了一個新的接口:java.util.Comparator 接口。
eg :
package example;
import java.util.Arrays;
import java.util.Comparator;
class Book{
private String title;
private double price;
public Book() {
}
public Book(String title,double price){
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "書名 : " + this.title + " ,價格 : " + this.price + "\n";
}
}
//比較器接口是用來作補救的,如果現有的代碼不能改變了,後來又想加入能進行比較的功能
class BookComparator implements Comparator<Book> {
@Override
public int compare(Book o1, Book o2) {
if(o1.getPrice() > o2.getPrice()) {
return 1;
} else if (o1.getPrice() < o2.getPrice()){
return -1;
}
return 0;
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
Book b1 = new Book("天龍八部",10);
Book b2 = new Book("西遊記",30);
Book b3 = new Book("射鵰英雄傳",20);
Book books[] = new Book[]{b1,b2,b3};
Arrays.sort(books, new BookComparator());
System.out.println(Arrays.toString(books));
}
}
★ . 關於Comparable 和Comparator 的區別?
· java.lang.Comparable 是在類定義的時候默認實現好的接口,裏面只有一個compareTo()方法;
· java.util.Comparator 是需要單獨定義一個比較規則,屬於挽救功能的操作。