【发布时间】:2014-09-29 13:51:08
【问题描述】:
今天我有一个不区分大小写的排序 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 中有没有一种简洁的方法来做到这一点?
【问题讨论】:
-
我认为你不能保证在
foo和String.CASE_INSENSITIVE_ORDER之前得到FOO,如果这是你所期望的。这是一个不敏感的排序,所以对于排序,FOO和foo是同一个东西,因此可以以任何顺序出现。 -
@T.J.Crowder
FOO和foo的顺序并不重要,棘手的部分是将它们都放在集合中,同时将bar放在 @987654335 之前@.
标签: java sorting set case-insensitive