java中List集合的元素是按照添加順序排序的,我們在實際開發過程中,可能會遇到需要對其內容進行排序的場景,接下來對我遇到的場景所採用的解決方式做個總結。 一、業務場景 管理後臺商戶名稱下拉列表,需平臺商戶名稱按照首字母A-Z順序進行排序展示。 二、解決思路 由於頁面展示的數據為後臺查詢所得的Li ...
java中List集合的元素是按照添加順序排序的,我們在實際開發過程中,可能會遇到需要對其內容進行排序的場景,接下來對我遇到的場景所採用的解決方式做個總結。
一、業務場景
管理後臺商戶名稱下拉列表,需平臺商戶名稱按照首字母A-Z順序進行排序展示。
二、解決思路
由於頁面展示的數據為後臺查詢所得的List集合中的元素,所以在後臺查到數據後,對集合進行排序,頁面展示也就是排序後的數據。
三、實現
首先需要排序的對象需要實現Comparable介面並且並覆寫compareto方法:
public class Merch implements Comparable<Merch>{
private String id;
private String merchId;
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中,返回給前端,如果顯示對象的名稱,則顯示的是按照漢語拼音排序後的商戶名稱。