`

Map排序

 
阅读更多
public class MapSortTest {
	public static void main(String[] args) {

		Map<Integer, String> map = new HashMap<Integer, String>();
		map.put(2, "awk");
		map.put(0, "shell");
		map.put(5, "java");
		map.put(7, "ruby");
		map.put(1, "plsql");
		map.put(3, "c");
		map.put(8, "go");
		map.put(6, "python");
		map.put(4, "perl");

		sortByKey(map);

		System.out.println("----------------------------");

		sort(map);
	}

	/**
	 * ugly sort by key
	 * @param map
	 */
	private static void sortByKey(Map<Integer, String> map) {
		Object[] keyArray = map.keySet().toArray();

		Arrays.sort(keyArray);

		for (int i = 0; i < keyArray.length; i++) {
			System.out.println(keyArray[i] + "\t" + map.get(keyArray[i]));
		}
	}

	/**
	 * more efficient sorted
	 * @param map
	 */
	private static void sort(Map<Integer, String> map) {
		List<Map.Entry<Integer, String>> mappingList = new ArrayList<Map.Entry<Integer, String>>(map.entrySet());

		Collections.sort(mappingList, new Comparator<Map.Entry<Integer, String>>() {
			public int compare(Map.Entry<Integer, String> mapping1, Map.Entry<Integer, String> mapping2) {

				// sort by key
				// return mapping1.getKey().compareTo(mapping2.getKey());
				
				return mapping1.getValue().compareTo(mapping2.getValue());
			}
		});

		Iterator<Map.Entry<Integer, String>> it = mappingList.iterator();
		while (it.hasNext()) {
			Map.Entry<Integer, String> entry = it.next();
			System.out.println(entry.getKey() + "\t" + entry.getValue());
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics