Map中字串key的排序
阿新 • • 發佈:2019-01-31
前言
今日一同事,諮詢我,map中key值排序的問題,具體需求如下:
map中key值為字串,長度不等,現在要求,key值按照字串排序;
分析此題:
首先得將map中的key值通過map.keySet()取出,然後轉成ArrayList,再通過Collections.sort方法排序即可。
具體程式碼如下:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; public class Task { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("service", "1"); map.put("servic", "3"); map.put("cervice", "12"); map.put("aice", "12"); map.put("eervice", "12"); map.put("hervice", "12"); Set<String> set = map.keySet(); List<String> list = new ArrayList<String>(set); Collections.sort(list, new Comparator<String>() { public int compare(String o1, String o2) { char[] cs1 = o1.toCharArray(); char[] cs2 = o2.toCharArray(); int result = -1; for (int i = 0; i < cs1.length; i++) { if (cs2.length <= i) { result = 1; break; } if (cs1[i] > cs2[i]) { result = 1; break; } else if (cs1[i] < cs2[i]) { result = -1; break; } } return result; } }); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }