java基础知识(Arrays类)
引入:Arrays里面包含了一系列静态方法用于管理或制作数组,比如排序和搜索
import java.util.Arrays;
1)toString返回数组的字符串形式
Integer[] integers = {1, 20, 90};
//直接使用 Arrays.toString 方法,显示数组
System.out.println(Arrays.toString(integers));//[1, 20, 90]
2)sort排序
Integer arr[] = {1, -1, 7, 0, 89};Arrays.sort(arr);//从小到大//sort是重载的,可以修改从大到小排序(定制排序)
3)binarySearch二分搜索法查找
Integer[] arr = {1, 2, 90, 123, 567};// binarySearch 通过二分搜索法进行查找,要求必须排好如果数组中不存在该元素,就返回 return -(low + 1); // key not found.low表示的是567应该在数组的位置下标int index = Arrays.binarySearch(arr, 567);System.out.println("index=" + index);//-6
4)copyOf数组元素的复制
Integer[] newArr = Arrays.copyOf(arr, arr.length)//1. 从 arr 数组中,拷贝 arr.length 个元素到 newArr 数组中//2. 如果拷贝的长度 > arr.length 就在新数组的后面 增加 null//例如原数组有[1,2,3],拷贝4个的话就是[1,2,3,null]//3. 如果拷贝长度 < 0 就抛出异常 NegativeArraySizeException
5)fill数组元素的填充
//ill 数组元素的填充Integer[] num = new Integer[]{9,3,2};//1. 使用 99 去填充 num 数组,可以理解成是替换原理的元素Arrays.fill(num, 99);System.out.println("==num 数组填充后 ==");System.out.println(Arrays.toString(num)//[99, 99, 99]
6)equals比较两个数组元素内容是否完全一致
//1. 如果 arr 和 arr2 数组的元素一样,则方法 trueboolean equals = Arrays.equals(arr,arr2);
7)asList将一组值,转换成list
List asList = Arrays.asList(2,3,4,5,6,1);//List集合System.out.println("asList=" + asList);System.out.println("asList 的运行类型 " + asList.getClass());//暂时还没学//1. asList 方法,会将 (2,3,4,5,6,1) 数据转成一个 List 集合//2. 返回的 asList 编译类型 List( 接口 )
例题:
package Test; //import java.util.Arrays; //import java.util.Comparator; import java.util.Arrays; import java.util.Comparator; public class ArrayExercise { public static void main(String[] args) { /* 案例:自定义Book类,里面包含name和price,按price排序(从大到小)。 要求使用两种方式排序 , 有一个 Book[] books = 4本书对象. 使用前面学习过的传递 实现Comparator接口匿名内部类,也称为定制排序。 [同学们完成这个即可 10min ], 可以按照 price (1)从大到小 (2)从小到大 (3) 按照书名长度从大到小 */ Book[] books = new Book[4]; books[0] = new Book("红楼梦", 100); books[1] = new Book("金瓶梅新", 90); books[2] = new Book("青年文摘20年", 5); books[3] = new Book("java从入门到放弃~", 300); //(1)price从大到小 // Arrays.sort(books, new Comparator() { // //这里是对Book数组排序,因此 o1 和 o2 就是Book对象 // @Override // public int compare(Object o1, Object o2) { // Book book1 = (Book) o1; // Book book2 = (Book) o2; // double priceVal = book2.getPrice() - book1.getPrice(); // //这里老师进行了一个转换 // //如果发现返回结果和我们输出的不一致,就修改一下返回的 1 和 -1 // if(priceVal > 0) { // return 1; // } else if(priceVal < 0) { // return -1; // } else { // return 0; // } // } // }); //(2)price从小到大 // Arrays.sort(books, new Comparator() { // //这里是对Book数组排序,因此 o1 和 o2 就是Book对象 // @Override // public int compare(Object o1, Object o2) { // Book book1 = (Book) o1; // Book book2 = (Book) o2; // double priceVal = book2.getPrice() - book1.getPrice(); // //这里老师进行了一个转换 // //如果发现返回结果和我们输出的不一致,就修改一下返回的 1 和 -1 // if(priceVal > 0) { // return -1; // } else if(priceVal < 0) { // return 1; // } else { // return 0; // } // } // }); //(3)按照书名长度从大到小 Arrays.sort(books, new Comparator() { //这里是对Book数组排序,因此 o1 和 o2 就是Book对象 @Override public int compare(Object o1, Object o2) { Book book1 = (Book) o1; Book book2 = (Book) o2; //要求按照书名的长度来进行排序 return book2.getName().length() - book1.getName().length(); } }); 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; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", price=" + price + '}'; } }