Map中字符串key的排序

来源:互联网 发布:matlab单位矩阵 编辑:程序博客网 时间:2024/06/14 20:27

前言 

  今日一同事,咨询我,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));}}}


0 0
原创粉丝点击