字符串排序
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Array; import java.util.*; public class Main { public static void main(String[] args) throws IOException { char[] ch = {'z','a', 'c', 'c', 'd', 'e'}; //字符串转为字符串 String str = new String(ch); //升序 Arrays.sort(ch); System.out.println("升序后的字符数组:"+Arrays.toString(ch)); //降序 //先转化为字符串数组再排序(利用Java8 Labmbda) String[] chString=new String(ch).split(""); Arrays.sort(chString,(l,r)-> r.charAt(0)-l.charAt(0)); System.out.println("降序后的字符数组:"+Arrays.toString(chString)); String[] s={"aa","a","c","deaa","aaaaa","hyfrd","dwq"}; Arrays.sort(s,(l,r)->l.length()-r.length()); System.out.println("字符串数组按长度升序:"+Arrays.toString(s)); Arrays.sort(s,(l,r)->r.length()-l.length()); System.out.println("字符串数组按长度降序:"+Arrays.toString(s)); Arrays.sort(s,(l,r)->{ for(int i=0;i<Math.min(l.length(),r.length());i++){ if(l.charAt(i)>r.charAt(i)){ return 1; }else if(l.charAt(i)<r.charAt(i)){ return -1; } } return l.length()-r.length(); }); System.out.println("先按字母升序再按长度升序:"+Arrays.toString(s)); /**自建类排序 * * 自建类数组排序 * p:自建类数组名 * 假设自建类有age属性,下面就是按年龄降序进行对象排序 * Arrays.sort(p,(l,r)->r.getAge()-r.getAge()); * 这种方法本质上还是实现Compartor接口,但是如果接口只有1个抽象方法一般可以用labmbda简化书写 */ } }
排序结果图:
关于集合:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<String> list=new ArrayList<>(); list.add("abddf"); list.add("dd"); list.add("c"); list.add("bdddddd"); //Collections.sort(list,(l,r)->r.length()-l.length());//实现Compartor的compare函数(按长度递减排序) //Collections.sort(list,Comparator.reverseOrder());//逆序(降序) Collections.sort(list,(l,r)->{//首字母排序 return r.charAt(0)-l.charAt(0); }); //Collections.sort(list);//默认升序 System.out.println(list); } }
不一样的烟火