展开全部
具体算法我会这样写:public static void main(String... args){
Collection names=new ArrayList<>();
names.add("黄某");
names.add("温某");
names.add("王某");
names.add("刘备");
names.add("曹操");
names.add("刘鹏");
names.add("曹植");
Map> nameMap=groupByLastName(names);
for (Map.Entry> nm : nameMap.entrySet()) {
System.out.print(nm.getKey()+":");
for (String name : nm.getValue()) {
System.out.print(name+"\t");
}
System.out.println();
}
}
// 核心算62616964757a686964616fe4b893e5b19e31333365653830法
private static Map> groupByLastName(Collection names) {
Map> nameMap=new HashMap<>();
for (String name : names) {
if(name.substring(0,2)=="欧阳") {
// 复姓的需要特殊处理,例如,欧阳。
// To do something in here.
}else {
// 非复姓。
Collection tc=nameMap.get(name.substring(0,1));
if(tc==null) {
tc=new ArrayList<>();
nameMap.put(name.substring(0,1),tc);
}
tc.add(name);
}
}
return nameMap;
}
输出: