Sort
1.Array.sort()
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.util.Arrays;
public class Main { public static void main(String[] args) throws Exception { BufferedWriter cout = new BufferedWriter(new OutputStreamWriter(System.out)); int[]a = {9,8,7,6,5,4,3,2,1,0}; Arrays.sort(a,0,a.length); for(int i = 0;i < a.length; i++) cout.write(a[i]+" "); cout.close(); } }
|
2.自定义排序
方法一: 创建实现Comparator接口的类/匿名内部类(推荐)
Arrays.sort(T[] a, Comparator<? Super T> c)用Comparator接口实现自定义排序规则
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.util.Arrays; import java.util.Comparator;
public class Main { public static void main(String[] args) throws Exception { BufferedWriter cout = new BufferedWriter(new OutputStreamWriter(System.out)); Integer[]a = {1,2,7,6,5,4,3,2,9,0}; Arrays.sort(a,new Comparator<Integer>(){ public int compare(Integer a,Integer b){ return b-a; } });
for(int i = 0;i < a.length; i++) cout.write(a[i]+" "); cout.close(); } }
|
输出:
样例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import java.io.*; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner;
public class Main { public static void main(String[] args) throws Exception{ StreamTokenizer cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); BufferedWriter cout = new BufferedWriter(new OutputStreamWriter(System.out));
Integer[] arr = new Integer[10];
for (int i = 0; i < 10; i++) { cin.nextToken(); arr[i] = (int) cin.nval; } Arrays.sort(arr,0,5, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; } });
for(int i = 0;i < 10; i++) { cout.write(arr[i]+" "); } cout.close();
} }
|
方法二:基于Comparator构建Lambda 表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.util.Arrays; import java.util.Comparator;
public class Main { public static void main(String[] args) throws Exception { BufferedWriter cout = new BufferedWriter(new OutputStreamWriter(System.out)); Integer[]arr = {0,1,2,3,4,5,6,7,8}; Arrays.sort(arr,(a,b)->{ return b - a; });
for(int i = 0;i < arr.length; i++) cout.write(arr[i]+" "); cout.close(); } }
|
输出:
方法三:重新实现Comparator接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.util.*;
public class Main { public static void main(String[] args) throws Exception{ BufferedWriter cout = new BufferedWriter(new OutputStreamWriter(System.out)); Integer[] arr = {5,4,7,9,2,12,54,21,1}; Arrays.sort(arr, new cmp()); cout.write(Arrays.toString(arr)); cout.close(); } }
class cmp implements Comparator<Integer>{ public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }
|
输出:
1
| [54, 21, 12, 9, 7, 5, 4, 2, 1]
|