Arrays.sort()使用的注意事项

Arrays.sort()使用的注意事项

  • Java 中的数据类型分为基本数据类型引用数据类型
    int 是基本数据类型,Integer 是引用数据类型
    Ingeterint 的包装类,int 的初值为 0,Ingeter的初值为null。

  • 初始化
    int num = 1;
    Integer num = new Integer(1);
    有了自动装箱拆箱,使得对Integer类也可使用:Integer num = 1;

  • 自动装箱拆箱

    从Java5.0版本以后加入了autoboxing功能;自动“拆箱”和“装箱”是依靠JDK5的编译器在编译期的“预处理工作”。
    自动装箱:将基本数据类型封装为对象类型,成为一个对象以后就可以调用对象所声明的所有的方法。

Arrays.sort()平时经常用到:有两种方式

第一种:将数组元素倒序

  • Arrays.sort(array,Collections.reverseOrder());
  • array 必须为 包装类对象

第二种:将数组元素升序or降序

1,重写比较器 默认是升序
List itemArrays.sort(y,new Comparator<Integer>(){
     
	@Override
	public int compare(Integer o1, Integer o2) {
     
		return o2-o1;  // 反过来是升序
	}
});
2,使用lambada表达式进行代码简化
Arrays.sort(array, (o1, o2) -> o2-o1);
  • 在实际应用中我们往往使用 基本数据类型 数组,这时候若使用sort() 就需要将基本数据类型转化为引用数据类型,否则便会报错
sort() 方法源码:
public static <T> void sort(T[] a, Comparator<? super T> c) {
     
   ...
 }

因此需要将 int[] 类型数组包装为 Integer[] 数组

// int数组转为Integer
// 将int数组转换为Integer数组
 int[] nums = {
     1,2,3};
 // 先将int数组转换为数值流
 IntStream stream = Arrays.stream(nums);
 // 流中的元素全部装箱,转换为流 ---->int转为Integer
 Stream<Integer> integerStream = stream.boxed();
 // 将流转换为数组
 Integer[] integers = integerStream.toArray(Integer[]::new);
最后排序完,需要转化回int[]数组
Arrays.stream(integers).mapToInt(Integer::valueOf).toArray();
在此感谢LeetCode里面的大佬们,互相学习,加油!

你可能感兴趣的:(java)