章13——包装类——Arrays类
1、包含了一系列静态方法,用于管理或操作数组(如排序、搜素)
因为是引用类型,sort方法后会直接印象到原数据。
import java.util.Arrays;
import java.util.Comparator;
public class Math {
public static void main(String[] args) {
Integer arr[] = {1,2,3,2,1};
Arrays.sort(arr, new Comparator(){
@Override
public int compare(Object o1, Object o2) {
Integer i1 = (Integer) o1;
Integer i2 = (Integer) o2;
//从小到大,反之从大到小
return i1 - i2;
}
});
}
}
compare return 的数字大于0还是小于0会直接影响排序是从大到小还是从小到大。
下列函数用于理解:
public class ArraysSortCustom {
public static void main(String[] args) {
int[] arr = {1,4,2,55,3,6,8,3,74,6,3,6};
bubble01(arr, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int i1 = (Integer) o1;
int i2 = (Integer) o2;
return i1 - i2;//相当于 aj > aj+1 时才会交换。
}
});
}
public static void bubble01(int[] arr, Comparator c){
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(c.compare(arr[j],arr[j+1]) > 0){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
有序数组的查找:
int index = Arrays.binarySearch(arr,123);
如果找不到返回
return -(low + 1);
//本应该在的位置 +1,再取负数。
aslist.getClass() 获得运行类型
课堂练习:给书按照价格大小排序,并打印
import java.util.Arrays;
import java.util.Comparator;
public class ArrayExercise {
public static void main(String[] args) {
Book[] books = new Book[4];
books[0] = new Book("红楼梦",100);
books[1] = new Book("金*瓶.梅",90);
books[2] = new Book("青年文摘",5);
books[3] = new Book("java从入门到放弃",300);
Arrays.sort(books, new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
double res =o2.getPrice() - o1.getPrice();
if(res > 0){
return 1;
}else if(res < 0){
return -1;
}else {
return 0;
}
}
});
System.out.println(Arrays.toString(books));
}
}
class Book{
private String name;
private double price;
public Book(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name + " " + price + " ";
}
}
System.out.println(Arrays.toString(books));
以上可以打印数组,内容里的books数组的类需要重写
toString 方法。