java中List集合的元素是按照添加順序排序的,咱們在實際開發過程當中,可能會遇到須要對其內容進行排序的場景,接下來對我遇到的場景所採用的解決方式作個總結。前端
1、業務場景java
管理後臺商戶名稱下拉列表,需平臺商戶名稱按照首字母A-Z順序進行排序展現。ide
2、解決思路工具
因爲頁面展現的數據爲後臺查詢所得的List集合中的元素,因此在後臺查到數據後,對集合進行排序,頁面展現也就是排序後的數據。this
3、實現對象
首先須要排序的對象須要實現Comparable接口而且並複寫compareto方法:排序
public class Merch implements Comparable<Merch>{接口
private String id;開發
private String merchId;get
private String merchName;
public Merch(String id, String merchId, merchName){
this.merchId = merchId;
this.merchName = merchName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id == null ? null : id.trim();
}
public String getMerchId() {
return merchId;
}
public void setMerchId(String merchId) {
this.merchId = merchId == null ? null : merchId.trim();
}
public String getMerchName() {
return merchName;
}
public void setMerchName(String merchName) {
this.merchName = merchName == null ? null : merchName.trim();
}
@Override
public int compareTo(Merch merchName) {
return this.merchName.compareTo(merchName.getMerchName());
}
}
在controller中,獲取到merchList<Merch>後作以下處理:
僞代碼:
//獲取商戶list集合
List<Merch> merchList = xxxxService.queryMerchList();
//Collections工具類的sort()方法對list集合元素排序
Collections.sort(merchList,new Comparator<Merch>() {
@Override
public int compare(Merch info1, Merch info2) {
//獲取中文環境
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
return com.compare(info1.getMerchName(), info2.getMerchName());
}
});
這樣,controller將改列表放入view中,返回給前端,若是顯示對象的名稱,則顯示的是按照漢語拼音排序後的商戶名稱。