如何用Java排序
2014-04-27 10:12
375 查看
在阅读开源Java项目源代码过程中,我发现Java开发者经常使用两种开发方式排序:一种是使用Collections和Arrays类的sort方法,另一种是使用可排序的数据结构。
使用sort()方法
使用可排序的数据结构
// 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);
// 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);
不好的编程实践
也有很多不好的编程实践,比如使用自定义的排序算法。下面的代码不仅算法效率不高,而且可读性差。
使用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()); } });
// Arrays.sort ObjectName[] arr = new ObjectName[10]; Arrays.sort(arr, new Comparator<ObjectName>() { public int compare(ObjectName o1, ObjectName o2) { return o1.toString().compareTo(o2.toString()); } });
使用可排序的数据结构
// 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);
// 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);
不好的编程实践
也有很多不好的编程实践,比如使用自定义的排序算法。下面的代码不仅算法效率不高,而且可读性差。
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; }
相关文章推荐
- Java中如何把一组对象按照其某一个属性值进行排序?详见补充:
- java中如何使用TreeMap进行键值对排序
- java常用的集合类有哪些?如何排序?
- java如何对map进行排序详解(map集合的使用)
- Java面试题:如何对HashMap按键值排序
- 程序员如何用Java排序
- Java8比较器,如何对 List 排序
- Java如何对ArrayList里的元素排序
- java如何对map进行排序详解(map集合的使用)
- Java如何对HashMap按值进行排序
- java---如何实现对Map系列排序
- java如何对ArrayList中对象按照该对象某属性排序
- Java如何对HashMap按值进行排序
- java新手如何简单的理解java数组中冒泡排序法是怎么实现排序的
- Java类对象排序问题---如何对不同类的所有对象进行排序
- java如何对Map结构按照key值排序
- Java如何对ArrayList里的元素排序
- Java面试题:如何对HashMap按键值排序
- java如何对map进行排序详解
- Java功底篇系列-02-如何理解实际开发中与“排序”相关的问题