一 、 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 是需要单独定义一个比较规则,属于挽救功能的操作。