中文怎么排序,这是个面试题求解答

怎么给“张三”,“李一”,“王五”排序,排序后为“李一”,“张三”、“王五”

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class MyTest {
private static Map map = new HashMap();
public static void main(String[] args) {
map.put("零", 0);
map.put("一", 1);
map.put("二", 2);
map.put("三", 3);
map.put("四", 4);
map.put("五", 5);
map.put("六", 6);
map.put("七", 7);
map.put("八", 8);
map.put("九", 9);

    List<String> list = new ArrayList<String>();
    list.add("赵六");
    list.add("李四");     
    list.add("张三");



    Collections.sort(list, new Comparator<String>(){

        @Override
        public int compare(String o1, String o2) {
            int v1 = map.get(o1.substring(1));
            int v2 = map.get(o2.substring(1));

            return v1 - v2;
        }

    });

    System.out.println(list);
}

}

为什么排序后不是“李一”“王五”“张三”?

排序时截取一下字符串,只要最后一个汉字就可以了

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class MyTest {
    private static Map<String, Integer> map = new HashMap<String, Integer>();
    public static void main(String[] args) {
        map.put("零", 0);
        map.put("一", 1);
        map.put("二", 2);
        map.put("三", 3);
        map.put("四", 4);
        map.put("五", 5);
        map.put("六", 6);
        map.put("七", 7);
        map.put("八", 8);
        map.put("九", 9);

        List<String> list = new ArrayList<String>();
        list.add("赵六");
        list.add("李四");     
        list.add("张三");



        Collections.sort(list, new Comparator<String>(){

            @Override
            public int compare(String o1, String o2) {
                int v1 = map.get(o1.substring(1));
                int v2 = map.get(o2.substring(1));

                return v1 - v2;
            }

        });

        System.out.println(list);
    }

}

这个就需要根据ascii码来映射到26个字母,然后根据字母排序了

单纯回答你的问题的话,看题目的意思应该是去掉姓氏按照名字来排序的,一<三<五