java中實現根據中文首字母排序
阿新 • • 發佈:2019-02-06
package awu.demo; import java.text.Collator; import java.util.Arrays; import java.util.Comparator; /** * 根據中文首字母排序 */ public class Demo { public static String[] sort(String [] data){ if(data==null || data.length==0){ return null; } Comparator<Object> comparator = Collator.getInstance(java.util.Locale.CHINA); Arrays.sort(data, comparator); return data; } public static void main(String[] args) { String data[] = new String[]{"王二麻子","張三","李四","阿一","田七"}; data = sort(data); for(String val : data){ System.out.println(val); } } }
輸出:
阿一
李四
田七
王二麻子
張三
擴充套件
/** * @TODO 將一個裝有person物件的 list 根據name 首字母排序 * @param List 排序前的資料來源 * @return list排序後的資料 */ public static List<PersonBean> listToSortByName(List<PersonBean> list){ if(list==null || list.size()==0){ return null; } Map<String, PersonBean> map = new HashMap<String, PersonBean>(); String names[] = new String[list.size()]; for(int i=0;i<list.size();i++){ String name = list.get(i).getName(); names[i] = name; map.put(name, list.get(i)); } names = sort(names); list.clear(); for(String name : names){ if(map.containsKey(name)) list.add(map.get(name)); } return list; } public static void main(String[] args) { List<PersonBean> list = new ArrayList<PersonBean>(); PersonBean person1 = new PersonBean(); person1.setId(1); person1.setName("張三"); PersonBean person2 = new PersonBean(); person2.setId(2); person2.setName("王二麻子"); PersonBean person3 = new PersonBean(); person3.setId(3); person3.setName("阿一"); PersonBean person4 = new PersonBean(); person4.setId(4); person4.setName("田七"); list.add(person1); list.add(person2); list.add(person3); list.add(person4); System.out.println("排序前"); for(PersonBean person : list){ System.out.println(person.getId()+" "+person.getName()); } list = listToSortByName(list); System.out.println("排序後"); for(PersonBean person : list){ System.out.println(person.getId()+" "+person.getName()); } }
結果
排序前
1 張三
2 王二麻子
3 阿一
4 田七
排序後
3 阿一
4 田七
2 王二麻子
1 張三
以上程式碼可能還有可優化的地方 望各位大神指點,不喜勿噴!