今天我有一个不区分大小写的排序Set
方式:
Set<String> set = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
set.add("foo");
set.add("FOO");
set.add("bar");
System.out.println(set.toString());
输出为:
[bar, foo]
但是我真正想要的是:
[bar, FOO, foo]
也就是说,我希望集合的排序不区分大小写,但是我希望集合中具有不同大小写(例如“ foo”和“ FOO”)的相同字符串,而不会丢弃最后一个。
我知道我可以排序List
,但就我而言,我需要一个Set
。
在Java中是否有一种巧妙的方法?
您可能想要使用一个不区分大小写排序的比较器,然后使用区分大小写的排序作为平局。
所以像这样:
Set<String> set = new TreeSet<>((a, b) -> {
int insensitive = String.CASE_INSENSITIVE_ORDER.compare(a, b);
return insensitive==0 ? a.compareTo(b) : insensitive;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句