加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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(),它确实考虑了大写和小写字母.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读