详解Java sort()数组排序(升序和降序)

网友投稿 790 2022-11-05


详解Java sort()数组排序(升序和降序)

我们在学习 java 的过程中肯定会遇到对数组进行升序或降序等排序问题,本节主要介绍如何实现 Java 数组的升序和降序。Java 语言使用 Arrays 类提供的 sort() 方法来对数组进行排序。

升序

使用 java.util.Arrays 类中的 sort() 方法对数组进行升序分为以下两步:

导入 java.util.Arrays 包。

使用 Arrays.sort(数组名) 语法对数组进行排序,排序规则是从小到大,即升序。

假设在数组 scores 中存放了 5 名学生的成绩,现在要实现从低到高排列的功能。在这里使用 Arrays.sort() 方法来实现,具体代码如下:

public static void main(String[] args) {

// 定义含有5个元素的数组

double[] scores = new double[] { 78, 45, http://85, 97, 87 };

System.out.println("排序前数组内容如下:");

// 对scores数组进行循环遍历

for (int i = 0; i < scores.length; i++) {

System.out.print(scores[i] + "\t");

}

System.out.println("\n排序后的数组内容如下:");

// 对数组进行排序

Arrays.sort(scores);

// 遍历排序后的数组

for (int j = 0; j < scores.length; j++) {

System.out.print(scores[j] + "\t");

}

}

如上述代码所示,要对一个数组进行升序排列,只需要调用 Arrays.sort() 方法即可。运行后的输出结果如下所示。

排序前数组内容如下:

78.0    45.0    85.0    97.0    87.0  

排序后的数组内容如下:

45.0    78.0    85.0    87.0    97.0

降序

在 Java 语言中使用 sort 实现降序有两种方法,简单了解即可。

1)利用 Collections.reverseOrder() 方法(Collections 是一个包装类。大家可以学习《Java Collections类》一节详细了解):

public static void main(String[] args) {

Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 }; // 数组类型为Integer

Arrays.sort(a, Collections.reverseOrder());

for (int arr : a) {

System.out.print(arr + " ");

}

}

输出结果如下:

9 8 7 6 5 4 3 2 1 0

2)实现 Comparator 接口的复写 compare() 方法,代码如下:

public class Test {

public static void main(String[] args) {

/*

* 注意,要想改变默认的排列顺序,不能使用基本类型(int,double,char)而要使用它们对应的类

*/

Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };

// 定义一个自定义类MyComparator的对象

Comparator cmp = new MyComparator();

Arrays.sort(a, cmp);

for (int arr : a) {

System.out.print(arr + " ");

}

}

}

// 实现Comparator接口

class MyComparator implements Comparator {

@Override

public int compare(Integer o1, Integer o2) {

/*

* 如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值, 这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了

*/

return o2 - o1;

}

}

输出结果如下所示。

9 8 7 6 5 4 3 2 1 0

注意:使用以上两种方法时,数组必须是包装类型,否则会编译不通过。

在 Java 中实现数组排序的方式很多,除了利用以上的几种方法外,还可以编写自定义方法来实现自己的排序算法,有兴趣的读者可以尝试编写。

Java排序方法sort的使用详解

对数组的排序:

//对数组排序

public void arraySort(){

int[] arr = {1,4,6,333,8,2};

Arrays.sort(arr);//使用java.util.Arrays对象的sort方法

for(int i=0;i

System.out.println(arr[i]);

}

}

对集合的排序:

//对list升序排序

public void listSort1(){

List list = new ArrayList();

list.add(1);

list.add(55);

list.add(9);

list.add(0);

list.add(2);

Collections.sort(list);//使fYjTXX用Collections的sort方法

for(int a :list){

System.out.println(a);

}

}

//对list降序排序

public void listSort2(){

List list = new ArrayList();

list.add(1);

list.add(55);

list.add(9);

list.add(0);

list.add(2);

Collections.sort(list, new Comparator() {

public int compare(Integer o1, Integer o2) {

return o2 - o1;

}

});//使用Collections的sort方法,并且重写compare方法

for(int a :list){

System.out.println(a);

}

}

System.out.println(arr[i]);

}

}

对集合的排序:

//对list升序排序

public void listSort1(){

List list = new ArrayList();

list.add(1);

list.add(55);

list.add(9);

list.add(0);

list.add(2);

Collections.sort(list);//使fYjTXX用Collections的sort方法

for(int a :list){

System.out.println(a);

}

}

//对list降序排序

public void listSort2(){

List list = new ArrayList();

list.add(1);

list.add(55);

list.add(9);

list.add(0);

list.add(2);

Collections.sort(list, new Comparator() {

public int compare(Integer o1, Integer o2) {

return o2 - o1;

}

});//使用Collections的sort方法,并且重写compare方法

for(int a :list){

System.out.println(a);

}

}


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

上一篇:VM虚拟机器和宿主机时间同步
下一篇:CRS常用OCR和Votedisk的操作命令总结
相关文章

 发表评论

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