将字母添加到Java HashSet

时间:2017-03-15 09:01:48

标签: java char set hashset

我想将所有小写字母添加到Java HashSet。为此,我使用以下代码片段:

for(char c = 'a'; c <= 'z'; c++)  
    set.add(c);

有没有更好的方法来做到这一点,比如我不必遍历所有字母表?

1 个答案:

答案 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的提交者