按拼音对HashMap中的key进行排序

来源:互联网 发布:java打印所有水仙花数 编辑:程序博客网 时间:2024/05/16 01:58

如果oracle数据库的字符设置成utf-8之后,就会发现用数据库的order by column进行排序并不是按照拼音来排序的,而是按照二进制的方式来排序的,不符合国人按照首字母拼音排序的需求,我们可以在程序中对查询出来的结果进行按拼音排序。

package com.zxc.util;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.TreeMap;public class SortHashMapByPinYin {public static void main(String[] args) {HashMap<String, String> map = new HashMap<String, String>();map.put("我", "我");map.put("你", "你");map.put("它", "它");map.put("阿强", "阿强");map.put("阿平", "阿平");map.put("阿宝", "阿宝");map.put("老板", "老板");map.put("程序员", "程序员");Map<String, String> resultMap = sortHashMap(map);System.out.println(resultMap);}/** * 功能描述:按拼音对HashMap中的key进行排序 */public static Map<String, String> sortHashMap(HashMap<String, String> hashMap) {Map<String, String> resultMap = Collections.synchronizedMap(new LinkedHashMap<String, String>());TreeMap<String, String> sorted_map = new TreeMap<String, String>(new Comparator<String>() {public int compare(String arg0, String arg1) {String s1 = "";String s2 = "";try {s1 = new String(arg0.getBytes("gbk"),"ISO-8859-1");s2 = new String(arg1.getBytes("gbk"),"ISO-8859-1");} catch (Exception e) {e.printStackTrace();}return s1.compareTo(s2);}});sorted_map.putAll(hashMap);for (String key : sorted_map.keySet()) {resultMap.put(key, sorted_map.get(key));}return resultMap;}}

输出结果:{阿宝=阿宝, 阿平=阿平, 阿强=阿强, 程序员=程序员, 老板=老板, 你=你, 它=它, 我=我}

原创粉丝点击