直接打印数组输出的是地址:
int[] arr = {10, 2, 55, 23, 24, 100};
System.out.println(arr);
用toString(数组)返回的是数组内容:
String rs = Arrays.toString(arr);
System.out.println(rs);
sort排序(默认升序):
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
自定义比较器比较对象(含比较浮点型数据)
升序是默认的,降序就需要重写比较器对象,比较器对象要求泛型,所以只能支持引用类型的排序。
Integer[] ages = {34, 12, 42, 23};
/**
参数一:目标数组 元素必须是引用类型
参数二:比较器对象的匿名内部类对象。
*/
Arrays.sort(ages1, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// 自定义比较规则。
// if(o1 > o2){
// return 1;
// }else if(o1 < o2){
// return -1;
// }
// return 0;
// return o1 - o2; // 简化的写法,默认升序
return o2 - o1; // 降序
}
});
System.out.println(Arrays.toString(ages));
Student[] students = new Student[3];
students[0] = new Student("学生A",23 , 175.5);
students[1] = new Student("学生B",18 , 185.5);
students[2] = new Student("学生C",20 , 195.5);
System.out.println(Arrays.toString(students));// Arrays.sort(students); // 直接运行会报错
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
// 自己指定比较规则
// return o1.getAge() - o2.getAge(); // 按照年龄升序排序!
// return o2.getAge() - o1.getAge(); // 按照年龄降序排序!!
// return Double.compare(o1.getHeight(), o2.getHeight()); // 比较浮点型可以这样写 升序
return Double.compare(o2.getHeight(), o1.getHeight()); // 比较浮点型可以这样写 降序
}
});
System.out.println(Arrays.toString(students));
二分搜索技术(前提数组必须先排好序,否则找的数据会错误)
(忽略,这条不重要)如果元素不存在,返回的值是:- (应该插入的位置索引 + 1)
int index = Arrays.binarySearch(arr, 55);
System.out.println(index);