如何将字符数组转换为Set

hao*_*ark 1 java

如何将字符列表添加到集合中?下面的代码似乎不起作用。

HashSet<Character> vowels = new HashSet<Character>(
        new Character[] {'a', 'e', 'i', 'o', 'u', 'y'}
    );
Run Code Online (Sandbox Code Playgroud)

我看到的错误是

构造函数HashSet(Character [])未定义

我尝试了Character []和char [],但是都没有用。

Dea*_*ool 7

首先将Character数组转换为List,然后使用HashSet <>()构造函数转换为Set

List<Character> chars = Arrays.asList(new Character[] {'a', 'e', 'i', 'o', 'u', 'y'});
Set<Character> charSet = new HashSet<>(chars);
System.out.println(charSet);
Run Code Online (Sandbox Code Playgroud)

或者你可以直接使用 Arrays.asList

Set<Character> charSet = new HashSet<>(Arrays.asList('a','e','i','o','u','y'));
Run Code Online (Sandbox Code Playgroud)

表格jdk-9有一些Set.of方法可以创建不可变对象

Set<Character> chSet = Set.of('a','e','i','o','u','y');
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下方法创建不可修改的Set Collections

Set<Character> set2 = Collections.unmodifiableSet(new HashSet<Character>(Arrays.asList(new Character[] {'a','e','i','o','u'})));
Run Code Online (Sandbox Code Playgroud)

通过使用 Arrays.stream

Character[] ch = new Character[] {'a', 'e', 'i', 'o', 'u', 'y'};
Set<Character> set = Arrays.stream(ch).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)