💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## 集合排序 ~~~java import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 集合排序 * @author 一教室 * */ public class CollectionSort { public static void main(String[] args) { //如果集合中存储的是基本数据类型的包装类 List<Integer> list = new ArrayList<Integer>(); list.add(3); list.add(7); list.add(2); list.add(5); list.add(1); list.add(11); list.add(22); System.out.println("list排序前的顺序" + list); Collections.sort(list);//根据元素的自然顺序对指定列表按升序进行排序。 System.out.println("list排序后的顺序" + list); //如果集合中存储的是字符串 List<String> list2 = new ArrayList<String>(); list2.add("3"); list2.add("7"); list2.add("2"); list2.add("5"); list2.add("1"); list2.add("11"); list2.add("22"); list2.add("212"); list2.add("31"); System.out.println("list2排序前的顺序" + list2); Collections.sort(list2);//字符串是按照其首字母对应的ASCII(Unicode)码值进行排序的。 System.out.println("list2排序后的顺序" + list2); //存储中文字符串 List<String> list3 = new ArrayList<String>(); list3.add("赵"); list3.add("钱"); list3.add("孙"); list3.add("李"); list3.add("周"); list3.add("吴"); list3.add("郑"); list3.add("王"); System.out.println("list3排序前的顺序" + list3); Collections.sort(list3);//字符串是按照对应的ASCII(Unicode)码值字典顺序进行排序的。 System.out.println("list3排序后的顺序" + list3); } } ~~~ ~~~java public class Student implements Comparable<Student> { private String name; private String code; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Student(String name, String code, int age) { super(); this.name = name; this.code = code; this.age = age; } public Student() { super(); } @Override public String toString() { return "Student [姓名=" + name + ", 学号=" + code + ", 年龄=" + age + "]"; } /** * 如果compareTo方法返回值为0,表示当前对象等于stu(参数对象); * 如果compareTo方法返回值为负数,表示当前对象小于stu; * 如果compareTo方法返回值为整数,表示当前对象大于stu * @param stu * @return */ @Override public int compareTo(Student stu) { //按照学号升序排列 String sCode = stu.getCode(); String code = this.code; //比较sCode和code的大小,compareTo()方法 int result = code.compareTo(sCode); return result; } } ~~~ ~~~java import java.util.Comparator; /** * Comparator接口的泛型,传入的是想要进行比较的类型 * @author 一教室 * */ public class StuComparator implements Comparator<Student> { /** * compare方法,此方法的方法体是Student类进行排序的依据 * 如果compare方法返回值是正整数,说明arg0大于arg1,则arg0排在arg1后面(arg0 > arg1) * 如果compare方法返回值是0,说明arg0等于arg1,则arg0和arg1位置不变(arg0 = arg1) * 如果compare方法返回值是负整数,说明arg0小于arg1,则arg0排在arg1前面(arg0 < arg1) */ @Override public int compare(Student arg0, Student arg1) { /*String name0 = arg0.getName(); String name1 = arg1.getName();*/ /** * compareTo方法,不过是用来比较此处的姓名,是String类的方法 * 如果参数字符串name1等于此字符串name0,则返回0(name0 = name1) * 如果参数字符串name1小于此字符串name0,则返回正整数(name0 > name1) * 如果参数字符串name1大于此字符串name0,则返回负整数(name0 < name1) * 这里的大于小于等于,指的是按照字典顺序比较 */ /*int result = name0.compareTo(name1); return (-1)*result;*/ int age0 = arg0.getAge(); int age1 = arg1.getAge(); int result = age1 - age0; return result; } } ~~~ ~~~java import java.util.Comparator; public class StringComparator implements Comparator<String> { //自己设置一个字典 String[] familyName = {"赵","钱","孙","李","周","吴","郑","王"}; public static int getIndex(String[] arr, String value) { for (int i = 0; i < arr.length; i++) { if (arr[i].equals(value)) { return i; //字符串时,换为 equals } } return -1;//如果未找到返回-1 } @Override public int compare(String o1, String o2) { int index1 = StringComparator.getIndex(familyName, o1);//该方法返回元素在数组中的索引 int index2 = StringComparator.getIndex(familyName, o2); int result = index1 - index2; return result; } } ~~~ ~~~java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ClassSort { public static void main(String[] args) { //按照学生姓名进行升序排列 Student xcl = new Student("徐春林", "j121001", 23); Student lwx = new Student("陆文鑫", "j121002", 25); Student gjn = new Student("高峻楠", "j121003", 21); Student xs = new Student("徐爽", "j121004", 22); List<Student> list = new ArrayList<Student>(); list.add(lwx); list.add(xs); list.add(xcl); list.add(gjn); System.out.println("排序前的顺序:"); for(Student stu : list) { System.out.println(stu); } //Collections.sort(list, new StuComparator());//此处要将排序的依据(匿名对象,实现Comparator接口)传入sort方法 Collections.sort(list); System.out.println("排序后的顺序:"); for(Student stu : list) { System.out.println(stu); } List<String> list2 = new ArrayList<String>(); list2.add("赵"); list2.add("周"); list2.add("孙"); list2.add("钱"); list2.add("李"); list2.add("郑"); list2.add("王"); list2.add("吴"); System.out.println("list2排序前的顺序:"); for(String str : list2) { System.out.println(str); } Collections.sort(list2, new StringComparator()); System.out.println("list2排序后的顺序:"); for(String str : list2) { System.out.println(str); } } } ~~~