当前位置: 首页> 教育> 幼教 > Arrays.sort() 自定义排序规则

Arrays.sort() 自定义排序规则

时间:2025/7/18 13:03:23来源:https://blog.csdn.net/qq_43619058/article/details/140014917 浏览次数:0次
  1. 基本类型数组 (如 int[] long[] double[] 等),该方法只能使用默认升序排序,不接受比较器Comparator

    	int[] nums = {3, 1, 2};Arrays.sort(nums);
    

    如需对基本类型数组进行自定义排序,需要将其转换为包装类型数组 Integer[],再使用带比较器的Arrays.sort()方法进行排序

    	// 方式一Integer[] numsWrapper = Arrays.stream(nums).boxed().toArray(Integer::new);Arrays.sort(numsWrapper, (o1, o2) -> Integer.compare(o2, o1));nums = Arrays.stream(numsWrapper).mapToInt(Integer::intValue).toArray();	//转回int// 方式二nums = IntStream.of(nums).boxed().sorted((o1, o2) -> Integer.compare(o2, o1)).mapToInt(Integer::intValue).toArray();
    

    其中,

    Arrays.stream(nums) / IntStream.of(nums)int[] 转换为一个

    boxed() 对基本类型 int 装箱为其对应的包装类型 Integer 即 将IntStream转换为Stream<Integer>

    sorted() 方法用于对中的元素进行排序

    mapToInt(Integer::intValue)Stream<Integer>转换回IntStream,通过Integer::intValue方法将Integer对象拆箱int

    toArray()将流转换回int数组

  2. 对象类型数组(如Integer[], String[]等)的排序,该方法可以接受一个Comparator进行自定义排序

    对于二维数组 int[][] 进行排序时,实际上是在对其中的每个int[]数组(即 行)进行排序,sort()同样可以接受一个Comparator,用于定义排序的规则

    	int[][] nums = {{1, 2},{3, 1}}Arrays.sort(nums, (o1, o2) -> Integer.compare(o1[1], o2[1]));	// [[3,1], [2,1]]
    
关键字:Arrays.sort() 自定义排序规则

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: