java – 为什么大写在这里没有正确排序?
发布时间:2020-12-15 04:21:57 所属栏目:Java 来源:网络整理
导读:我正在尝试对List String进行排序的项目.这是未排序的List,以及它当前是如何排序的: Unsorted: [Pineapple,pineapple,apple,apricot,Banana,mango,Mango,melon,peach]Sorted: [apple,peach,Pineapple,pineapple] 为什么芒果没有放在芒果面前,菠萝为什么菠萝
我正在尝试对List< String>进行排序的项目.这是未排序的List,以及它当前是如何排序的:
Unsorted: [Pineapple,pineapple,apple,apricot,Banana,mango,Mango,melon,peach] Sorted: [apple,peach,Pineapple,pineapple] 为什么芒果没有放在芒果面前,菠萝为什么菠萝呢? 这是我的代码: import java.util.*; import java.lang.*; import java.io.*; class Test { public static void main (String[] args) throws java.lang.Exception { List<String> fruits = new ArrayList<String>(7); fruits.add("Pineapple"); fruits.add("pineapple"); fruits.add("apple"); fruits.add("apricot"); fruits.add("Banana"); fruits.add("mango"); fruits.add("Mango"); fruits.add("melon"); fruits.add("peach"); System.out.println("Unsorted: " + fruits); Collections.sort(fruits,new Comparator<String>() { @Override public int compare(String o1,String o2) { return o1.compareToIgnoreCase(o2); } }); System.out.println("Sorted: " + fruits); } } 解决方法
您使用compareToIgnoreCase()作为比较方法,因此它将’Pineapple’和’pineapple’比较为0(相同的字符串),将它们按照排序时的顺序排列,因为Collections.sort保证相同的元素不会重新排序.
换句话说,’菠萝’出现在’菠萝’之前,所以现在由于ignoreCase它们是相同的弦,’菠萝’将留在’菠萝’前面. 由于未排序的列表在’菠萝’之前具有’菠萝’,因此比较将它们以相同的顺序放入排序列表中.这些规则同样适用于“芒果”和“芒果”.你正在寻找的比较方法只是compareTo(),它确实考虑了大写和小写字母. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |