1. 程式人生 > >Map中字串key的排序

Map中字串key的排序

前言 

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