[java] .asSet (…)이 API에 있습니까?

세트를 만드는 매우 간단한 방법을 찾고 있습니다.

Arrays.asList("a", "b" ...) 생성 List<String>

비슷한 것이 Set있습니까?



답변

이제 Java 8을 사용하면 타사 프레임 워크없이이 작업을 수행 할 수 있습니다.

Set<String> set = Stream.of("a","b","c").collect(Collectors.toSet());

수집기를 참조하십시오 .

즐겨!


답변

Guava를 사용하면 다음 과 같이 간단합니다.

Set<String> mySet = ImmutableSet.<String> of("a", "b");

또는 변경 가능한 세트의 경우 :

Set<String> mySet = Sets.newHashSet("a", "b")

더 많은 데이터 유형은 Guava 사용자 가이드를 참조하세요.


답변

당신은 사용할 수 있습니다

new HashSet<String>(Arrays.asList("a","b"));


답변

0 개 또는 1 개의 멤버가있는 특수한 경우 세트의 경우 다음을 사용할 수 있습니다.

java.util.Collections.EMPTY_SET

과:

java.util.Collections.singleton("A")


답변

다른 사람들이 말했듯이 다음을 사용하십시오.

new HashSet<String>(Arrays.asList("a","b"));

이것이 Java에 존재 하지 않는 이유 Arrays.asList는 고정 된 크기의 목록 을 반환하기 때문입니다.

public static void main(String a[])
{
  List<String> myList = Arrays.asList("a", "b");
  myList.add("c");
}

보고:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(Unknown Source)
    at java.util.AbstractList.add(Unknown Source)

클래스 Set내부에는 “고정 크기”의 JDK 구현이 없습니다 Arrays. 왜 이것을 원합니까? A Set는 중복이 없음을 보장하지만 직접 입력하는 경우 해당 기능이 필요하지 않으며 List더 많은 메서드가 있습니다. 두 인터페이스 모두 확장 CollectionIterable.


다른 사람들이 말했듯이, 이 기능을 정말로 원한다면 구아바를 사용하십시오 -JDK에 없기 때문입니다. 이에 대한 정보는 그들의 답변 (특히 Michael Schmeißer의 답변)을 참조하십시오.


답변

Java 9에서 유사한 기능이 팩토리 메소드를 통해 추가되었습니다.

Set<String> oneLinerSet = Set.of("a", "b", ...);

(동등한 List것도 있습니다.)


답변

아니요하지만 이렇게 할 수 있습니다

new HashSet<String>(Arrays.asList("a", "b", ...));