1. 程式人生 > >Java中java.util.Comparator介面簡介

Java中java.util.Comparator介面簡介

概念:
java.util.Comparator介面為一個比較器介面,它提供了一個自定義比較規則的方法,可以根據需要對不支援比較的物件按自己的邏輯進行排序,一般與Collections.sort()方法一起使用。
應用場景:
為字串、物件等無法直接比較大小排序的物件提供比較邏輯,進而實現排序。或者按自己需要的邏輯進行排序。
案例程式碼:

 List<String> list = new ArrayList<>();
    		Collections.addAll(
    			list, 
    			"fda1","sfc5","sdd8","asg9","fdf3",
    			"sdu5","fdr4","dfz3","sss5");
    		System.out.println(list);
    		Collections.sort(list);//排序
    		System.out.println(list);

如果直接排序,則會根據首字母進行排序,排序結果為[asg9, dfz3, fda1, fdf3, fdr4, sdd8, sdu5, sfc5, sss5]、
如果我們給Collections.sort()方法增加比較器,比較器的泛型為需要比較的物件的型別,程式碼如下。

Collections.sort(list, new Comparator<String>() {
			/*
			 * o1和o2比大小
			 * o1大,正數
			 * o1小,負數
			 * 相同,0
			 */
			@Override
			public int compare(String o1, String o2) {
				//取用字串的第三個字母進行比較
				int a = o1.charAt(2);
				int b = o2.charAt(2);
				//return a-b;
				if(a<b) {
					return -1;
				} else if(a>b) {
					return 1;
				} else {
					return 0;
				}
			}
		});                
		System.out.println(list);

則會根據字串的第三個字元進行排序,排序結果為[fda1, sfc5, sdd8, fdf3, asg9, fdr4, sss5, sdu5, dfz3]