4.10 如何在Java中進行排序開發
在分析大量的開源Java專案原始碼時候,我發現Java開發者經常使用兩種方式進行排序。一個是使用Collections或者Arrays的sort()方法,另一個是使用排序的資料結構,比如TreeMap和TreeSet。
1.使用排序方法
如果它是個集合,可以使用集合的sort()方法。
// Collections.sort
List<ObjectName> list = new ArrayList<ObjectName>();
Collections.sort(list, new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
如果已經配置了集合或陣列,這非常方便。
2.利用排序的資料結構
如果是個list或set,可以利用TreeSet進行排序。
// TreeSet
Set<ObjectName> sortedSet = new TreeSet<ObjectName>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedSet.addAll(unsortedSet);
如果是一個Map,可以使用TreeMap進行排序。TreeMap是按照key進行排序的。
// TreeMap - using String.CASE_INSENSITIVE_ORDER which is a Comparator that orders Strings by compareToIgnoreCase
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(unsortedMap);
//TreeMap - In general, defined comparator
Map<ObjectName, String> sortedMap = new TreeMap<ObjectName, String>(new Comparator<ObjectName>() {
public int compare(ObjectName o1, ObjectName o2) {
return o1.toString().compareTo(o2.toString());
}
});
sortedMap.putAll(unsortedMap);
這個方法非常有用,如果你為集合做大量查詢操作。排序的資料結構將給出O(logN)的時間複雜度,其低於O(n).
3. 壞的實踐
還有不良的做法,如使用自定義排序演算法。以下面的程式碼為例,不僅演算法不是有效的,而且它是不可讀的。這種情況發生在不同形式的變化中。
double t;
for (int i = 0; i < 2; i++)
for (int j = i + 1; j < 3; j++)
if (r[j] < r[i]) {
t = r[i];
r[i] = r[j];
r[j] = t;
}
相關文章
- 如何在Python中對dicts列表進行排序Python排序
- 如何在dhtmlxGantt網格中對任務進行排序和重新排序HTML排序
- 直播app開發,對字串中字元進行自然順序排序APP字串字元排序
- 如何在Windows上使用Python進行開發WindowsPython
- 如何在 Linux/Windows/MacOS 上使用 .NET 進行開發LinuxWindowsMac
- 如何在容器中進行抓包?
- 測試開發專題:如何在spring-boot中進行引數校驗Springboot
- 4.10
- 如何在Django ORM中進行not查詢?DjangoORM
- 基於PostgreSQL進行Java應用開發SQLJava
- 如何在 Fedora 上開始 Java 開發Java
- Java stream sorted使用 Comparator 進行多欄位排序Java排序
- Revit二次開發-曲線三連:對curves進行排序排序
- 如何在SAP Cloud Platform上進行第一個integration flow開發CloudPlatform
- 如何在Linux中進行檔案切割操作?Linux
- [鐵柱分享]第五期:如何在 Laravel Eloquent 中對 all() 的結果進行排序?Laravel排序
- 對字典進行排序排序
- Python對字典進行排序Python排序
- 在Linux中,如何在Linux中進行系統映象管理?Linux
- 在Linux中,如何在Linux中進行資源配額管理?Linux
- Java入門程式設計師必看:給陣列進行排序Java程式設計師陣列排序
- Java使用Collections對中文字元進行首字母排序Java字元排序
- 使用Devstack進行開發dev
- 使用 Devstack 進行開發dev
- 如何進行Vue開發Vue
- 陣列進行排序的方法陣列排序
- 如何在File Cabinet Pro中對檔案排序?排序
- 如何在File Cabinet Pro中對檔案排序排序
- 在Linux中,如何在Linux中使用LXD進行容器管理?Linux
- 如何在Java後端對輸入進行簡單驗證? - tejanshranaJava後端
- Java開發中Netty執行緒模型原理解析!JavaNetty執行緒模型
- 如何進行Flutter混合開發Flutter
- 使用容器Docker進行開發Docker
- 進行佛家專案開發
- 使用eclipse 進行 Cesium 開發Eclipse
- Java集合中的排序方法Java排序
- 在命令列用 sort 進行排序命令列排序
- python 對字典的值進行排序Python排序
- C# JSON按key進行排序C#JSON排序