案例使用Google Guava进行不敏感的排序

pde*_*eva 7 java sorting guava

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

return Ordering.natural().immutableSortedCopy(iterable);
Run Code Online (Sandbox Code Playgroud)

return Ordering.usingToString().immutableSortedCopy(machines);
Run Code Online (Sandbox Code Playgroud)

但是,这使得"排序"区分大小写.

如何使用guava apis创建不区分大小写的排序不可变列表?

Pab*_*dez 15

我相信你需要使用from方法和String.CASE_INSENSITIVE_ORDER比较器,就像这样.

return Ordering.from(String.CASE_INSENSITIVE_ORDER).immutableSortedCopy(iterable);
Run Code Online (Sandbox Code Playgroud)

  • 对于`usingToString()`替换,我将使用`Functions.toStringFunction()`组合你的`Ordering`,例如`return Ordering.from(String.CASE_INSENSITIVE_ORDER).onResultOf(Functions.toStringFunction()).immutableSortedCopy(iterable) ;` (6认同)
  • `from`采用任何比较器.在`toString`情况下,您需要创建自己的比较器,并在比较之前执行类似`toString().toLowerCase()`的操作.干杯! (2认同)