问题描述
- 中文怎么排序,这是个面试题求解答
-
怎么给“张三”,“李一”,“王五”排序,排序后为“李一”,“张三”、“王五”
解决方案
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个字母,然后根据字母排序了
解决方案六:
单纯回答你的问题的话,看题目的意思应该是去掉姓氏按照名字来排序的,一<三<五
时间: 2024-12-24 02:05:32