Collections之sort的两个方法(自然排序和自定义比较器排序)
Collections是个服务于Collection的工具类(静态的),它里面定义了一些集合可以用到的方法。
本文演示了Collections类里sort()的两个方法。第一种只需传入被排序的集合,便会为它自然排序。但有时我们需要自定义排序的方式,这是我们就得定义一个比较器,里面定义我们要排序的方式,调用sort()时,把被排序的集合和比较器同时传入,就可以按照自定义的方式排序了。
package Test602; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; /** * 对字符串进行自然排序和长度排序 */ public class CollectionsDemo { public static void main(String[] args) { ArrayList<String> al = new ArrayList<String>(); al.add("fa"); al.add("gaa"); al.add("xa"); al.add("vacvh"); al.add("wetq"); al.add("hja"); al.add("jewik"); getAl(al); System.out.println(ziRanSort(al)); System.out.println(strLenSort(al)); } //按原序列取出ArrayList的元素 public static void getAl(ArrayList<String> al) { Iterator<String> it = al.iterator(); //String result = null; while(it.hasNext()) { String result = it.next(); System.out.println(result); } } //进行自然排序 public static ArrayList<String> ziRanSort(ArrayList<String> al) { Collections.sort(al); return al; } //按照字符串长度进行排序 public static ArrayList<String> strLenSort(ArrayList<String> al) { StrLenComparator comp = new StrLenComparator(); Collections.sort(al, comp); return al; } }
新建一个类,里面自定义一个比较器(按照字符串的长度进行比较)
package Test602; import java.util.Comparator; public class StrLenComparator implements Comparator<String>{ public int compare(String str1, String str2) { // TODO Auto-generated method stub if(str1.length()>str2.length()) { return 1; } if(str1.length()<str2.length()) { return -1; } return 0; } }