[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
더 많은 메서드가 있습니다. 두 인터페이스 모두 확장 Collection
및 Iterable
.
다른 사람들이 말했듯이, 이 기능을 정말로 원한다면 구아바를 사용하십시오 -JDK에 없기 때문입니다. 이에 대한 정보는 그들의 답변 (특히 Michael Schmeißer의 답변)을 참조하십시오.
답변
Java 9에서 유사한 기능이 팩토리 메소드를 통해 추가되었습니다.
Set<String> oneLinerSet = Set.of("a", "b", ...);
(동등한 List
것도 있습니다.)
답변
아니요하지만 이렇게 할 수 있습니다
new HashSet<String>(Arrays.asList("a", "b", ...));