Arrays.sort()

网友投稿 592 2022-10-19

Arrays.sort()

Arrays.sort()

Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,可以直接调用。

首先我们IDEA,可以查看到它的用法有很多,但其实可以大致分为几类。

注:数组类型是Object(),即sort()的参数类型也为Object。以int型数组为例。

用法1:

Arrays.sort(int[] a)

它是对数组的所有元素进行升序排序,即将数组中的元素按照从小到大进行排序。

代码实现:

import java.util.*;public class leetcode { public static void main(String[] args) { int[] arr = {5,2,0,7,1,3,1,4}; Arrays.sort(arr); for (int item:arr) { System.out.print(item + " "); } System.out.println(); }}

运行结果:

用法2:

Arrays.sort(int[] a, int fromIndex, int toIndex)

它是对数组部分元素进行升序排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序—[fromIndex,toIndex)

注意:下标为toIndex的元素不参与排序!

代码实现:

import java.util.*;public class leetcode { public static void main(String[] args) { int[] arr = {5,2,0,7,1,3,1,4}; Arrays.sort(arr,1,3); for (int item:arr) { System.out.print(item + " "); } System.out.println(); }}

运行结果:

上面的两种用法很容易发现一个问题,那就是数组没有办法进行降序排序,如果想进行降序排序该怎么办呢?

用法3:

public static void sort(T[] a, Comparator c)

注:根据指定的比较器引发的顺序对指定的对象数组进行排序

public static void sort(T[] a,int fromIndex,int toIndex, Comparator c)

注:根据指定的比较器引发的顺序对指定的对象数组的指定范围进行排序

代码实现:

import java.util.Arrays;class Person implements Comparable{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(Person o) { return this.age - o.age; }}public class leetcode { public static void main(String[] args) { Person[] peoples = new Person[]{ new Person("张三",15), new Person("李四",30), new Person("王五",11), new Person("赵六",10) }; System.out.println("排序前:"); for(Person p : peoples){ System.out.println(p); } System.out.println("排序后:"); Arrays.sort(peoples); for(Person p : peoples){ System.out.println(p); } }}

运行结果:

实战演练:leetcode179题

题目:

给定一组非负整数 ​​nums​​,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

解法:(关键代码)

class Solution { public String largestNumber(int[] nums) { //解法一 String[] str=new String[nums.length]; for(int i=0;i(o2+o1).compareTo(o1+o2)); StringBuilder sb=new StringBuilder(); for(String s:str){ sb.append(s); } return sb.toString().charAt(0)=='0'?"0":sb.toString(); //解法二 // PriorityQueue p=new PriorityQueue<>((x,y)->(y+x).compareTo(x+y)); // for(int i:nums){ // p.offer(String.valueOf(i)); // } // String res=""; // while(p.size()>0){ // res+=p.poll(); // } // return res.charAt(0)=='0'?"0":res; }}

更多用法:

lambda表达式详解:

Arrays.sort()的深入理解:

Arrays.sort() ----- DualPivotQuicksort

Arrays.sort() ----- TimSor

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:中国科学院大学教务抢课程序 多线程暴力版
下一篇:基于StudioX框架的AspNetCore MVC / Angular项目脚手架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~