Arrays操作数组的工具.
方法名 | 说明 |
public static String toString(数组) | 把数组拼成一个字符串 |
public static int binarySearch(数组,查找的元素) | 二分查找法查找元素 |
public static int[] copyOf(原数组,新数组长度) | 拷贝数组 |
public static int[] copyOfRange(原数组,起始索引,结束索引) | 拷贝数组(指定范围) |
public static void fill(数组,元素) | 填充数组 |
public static void sort(数组) | 按照默认方式进行数组排序 |
public static void sort(数组,排序规则) | 按照指定的规则排序 |
//Tostring:将数组变成字符串
System.out.println("----------tostring----------");
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(Arrays.toString(arr));
//binarySearch:二分法查找元素
//细节1:二分查找的前提:数字中的元素必须是有序的,数组中的元素必须是升序
//细节2:如果要查找的元素是寻存在的,那么返回的是真是的索引
//但是,如果查找的元素是不存在的,那么返回的是-插入点 - 1
//疑问:为什么要减一
//解释:如果此时,那么如果返回的值是-插入点,就会出现问题了
//如果要查找的数字是0的话,此时0是不存在的,但是按照上面的规则-插入点,应该是-0
//为了避免这样的情况,Java在这个基础上减一
System.out.println("----------binarySearch----------");
System.out.println(Arrays.binarySearch(arr, 10));
System.out.println(Arrays.binarySearch(arr, 1));
System.out.println(Arrays.binarySearch(arr, 2));
//copyOf:拷贝数组
System.out.println("----------copyOf----------");
int[] arr1 = Arrays.copyOf(arr, 10);
System.out.println(Arrays.toString(arr1));
System.out.println("----------copyOfRange----------");
//包含0索引不包含9索引
int[] arr2 = Arrays.copyOfRange(arr, 0, 9);
System.out.println(Arrays.toString(arr2));
//fill:填充数组
System.out.println("----------fill----------");
Arrays.fill(arr, 100);
System.out.println(Arrays.toString(arr));
//sort:排序,默认情况下,给基本数据类型进行升序
System.out.println("----------sort----------");
int[] arrA={1,4,3,2,7,5,9,10,8};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
lambda表达式的作用为简化匿名内部类:
原:
public static void main(String[] args) {
Integer[] arr = {1,4,2,7,9,5};
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
System.out.println(Arrays.toString(arr));
}
简化后:
Arrays.sort(arr,(Integer o1,Integer o2)->{
return o1 -o2;
});
System.out.println(Arrays.toString(arr));
}
}
函数式编程:
函数式编程是一种思想特点.
面向对象:先找对象,让对象做事情.
函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做.
就是我们要学习的lamnda表达式
lambda表达式可以用来简化匿名内部类的书写
lambda表达式只能简化函数式接口的匿名内部类的写法
函数式接口:
有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以用@Functionallnterface
省略核心:可推导,可省略
1.参数类型可以省略不写
2.如果只有一个参数,参数类型可以省略,同时()也可以省略
3.如果lambda表达式的方法只有一种:大括号,分号,return可以省略不写,需要同时省略