【问题标题】:How sorting is happening here and comparison between cap's and small letters?这里如何排序以及大写字母和小写字母之间的比较?
【发布时间】:2012-07-13 14:01:33
【问题描述】:
public class BioDiesel {
            public static void main(String args[]) {
                LinkedList<String> list = new LinkedList<String>();
                list.add("BbB1");
                list.add("bBb2");
                list.add("bbB3");
                list.add("BBb4");
                Collections.sort(list);
                for (String str : list) {
                    System.out.print(str + ":");
                }
            }
}

代码运行良好并按排序顺序显示结果。有人可以解释在上述提供的字符串元素的情况下如何执行排序吗?

输出是怎么来的:

BBb4:BbB1:bBb2:bbB3:

【问题讨论】:

  • 请尝试改进您的问题。对不起,但很难理解你在问什么。与其粘贴一些带有简短封面说明的代码,不如尝试提供更多说明:您要解决的问题是什么,您的预期解决方案是什么,您面临的障碍是什么,等等。

标签: java sorting collections scjp


【解决方案1】:

假设我正确理解了您的问题,这应该可行:

Collections.sort(list, String.CASE_INSENSITIVE_ORDER);

String.CASE_INSENSITIVE_ORDER 是一个比较器类,在比较字符串时会忽略大小写。

【讨论】:

    【解决方案2】:

    让我们从the documentation for Collections.sort开始:

    根据其元素的自然顺序将指定列表按升序排序。

    字符串的自然顺序是什么? String can tell us:

    比较基于字符串中每个字符的 Unicode 值。

    当然,b 的 unicode 值高于 B 的 unicode 值。

    如果您想要不区分大小写的排序,a form of sort 采用 ComparatorString 提供了一个预制的 CASE_INSENSITIVE_ORDER 比较器。

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 2016-05-03
      • 2013-02-04
      • 2021-08-18
      • 1970-01-01
      • 2018-12-14
      • 2011-06-16
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多