我想将所有小写字母添加到Java HashSet。为此,我使用以下代码片段:
for(char c = 'a'; c <= 'z'; c++)
set.add(c);
有没有更好的方法来做到这一点,比如我不必遍历所有字母表?
答案 0 :(得分:0)
在使用IntStream
的Java 8中,我认为您应该能够获得所有小写的Character
值:
Set<Character> set = IntStream.rangeClosed(Character.MIN_VALUE, Character.MAX_VALUE)
.filter(Character::isLowerCase)
.mapToObj(i -> Character.valueOf((char) i))
.collect(Collectors.toSet());
此Set<Character>
包含1,402个Character
个对象。
如果您不想将char
值设置为Character
个对象,并且不介意使用第三方库,则可以使用Eclipse Collections执行以下操作:
CharSet charSet = IntInterval.zeroTo(Character.MAX_VALUE)
.asLazy()
.select(Character::isLowerCase)
.collectChar(i -> (char) i)
.toSet();
此CharSet
包含1,402 char
个值。
如果您不想要全部小写字母,那么只需将范围更改为您要查找的范围即可。例如:
CharSet charSet = IntInterval.fromTo('a', 'z')
.asLazy()
.collectChar(i -> (char) i)
.toSet();
注意:我是Eclipse Collections的提交者