【问题标题】:Case Insensitive sorting using Google Guava使用 Google Guava 进行不区分大小写的排序
【发布时间】:2011-06-19 03:33:03
【问题描述】:

目前我在 2 个不同的地方使用以下 2 段代码来创建一个排序的、不可变的列表。

return Ordering.natural().immutableSortedCopy(iterable);

return Ordering.usingToString().immutableSortedCopy(machines);

但是,这使得“排序”大小写敏感

如何使用 guava api 制作一个大小写不区分排序的不可变列表?

【问题讨论】:

    标签: java sorting guava


    【解决方案1】:

    我相信您需要将from 方法与String.CASE_INSENSITIVE_ORDER 比较器一起使用,就像这样。

    return Ordering.from(String.CASE_INSENSITIVE_ORDER).immutableSortedCopy(iterable);
    

    【讨论】:

    • 好的,这似乎在使用 Ordering.natural 时有效,但是我在另一个地方使用 Ordering.usingToString().immutableSortedCopy(),在这种情况下它将如何工作?
    • from 接受任何比较器。在toString 的情况下,您需要创建自己的比较器并在比较之前执行toString().toLowerCase() 之类的操作。干杯!
    • 对于usingToString() 替换,我会将OrderingFunctions.toStringFunction() 组合在一起,例如return Ordering.from(String.CASE_INSENSITIVE_ORDER).onResultOf(Functions.toStringFunction()).immutableSortedCopy(iterable);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2016-10-05
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多