最近在阅读开源Java项目源代码过程中,我发现Java开发者经常使用两种开发方式排序:一种是使用Collections和Arrays类的sort方法,另一种是使用可排序的数据结构。
使用sort()方法
如果是一个Collection,使用Collections.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()); } });
如果它是一个Array,使用Arrays.sort()方法。
// 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()); } });
使用可排序的数据结构
如果是一个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 - 使用String.CASE_INSENSITIVE_ORDER //是一个Comparator,他根据compareToIgnoreCase排列Strings Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER); sortedMap.putAll(unsortedMap);
//TreeMap - 一般来说会定义一个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; } } }
原文地址:http://www.programcreek.com/2014/03/how-developers-sort-in-java/
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注