source

.asSet(...)이 API에 있나요?

factcode 2022. 9. 30. 11:01
반응형

.asSet(...)이 API에 있나요?

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

Arrays.asList("a", "b" ...)작성하다List<String>

비슷한 게 있나요?Set?

Java 8을 사용하면 서드파티 프레임워크 없이도 이를 수행할 수 있습니다.

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

Collectors를 참조.

맛있게 드세요!

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")

Java 9 에서는, 공장에서의 방법으로 유사한 기능이 추가되고 있습니다.

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

(에 상당하는 것이 있습니다.List)도 참조해 주세요.)

다른 사람이 말한 것처럼 다음을 사용합니다.

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

이것이 자바에 존재하지 않는 이유는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)

「고정 사이즈」의 JDK 실장은 없습니다.Set내부Arrays왜 이걸 원하죠?aSet중복이 없음을 보증합니다만, 손으로 입력하는 경우는, 그 기능은 필요 없습니다.그리고.List더 많은 메서드가 있습니다.양쪽 인터페이스가 확장됩니다.Collection그리고.Iterable.


JDK에 없는 guava를 사용하세요.이 기능을 사용하려면 guava를 사용하십시오.이에 대한 정보는 이들의 답변(특히 Michael Schmeierer의 답변)을 참조하십시오.

아니, 근데 이렇게 해도 돼

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

여기 당신이 사용할 수 있는 작은 방법이 있습니다.

  /**
   * Utility method analogous to {@link java.util.Arrays#asList(Object[])}
   *
   * @param ts
   * @param <T>
   * @return the set of all the parameters given.
   */
  @SafeVarargs
  @SuppressWarnings("varargs")
  public static <T> Set<T> asSet(T... ts) {
    return new HashSet<>(Arrays.asList(ts));
  }

guava에서는

Set<String> set = Sets.newHashSet("a","b","c");

새로운 해시 세트

Java 8 및 enum을 사용하는 다른 방법은 다음과 같습니다.

Set<String> set = EnumSet.of(StandardOpenOption.CREATE, StandardOpenOption.READ);

EnumSet을 참조하십시오.

이 접근방식과 퍼포먼스 분석을 권장합니다.

Set<String> set = Stream.of(StandardOpenOption.CREATE, StandardOpenOption.READ).collect(Collectors.toSet());

5개 이상의 요소가 있는 경우 메서드의 javadoc은 Set의 javadoc에서 볼 수 있듯이 성능 문제가 있을 수 있음을 나타냅니다.Of(E, E...)

언급URL : https://stackoverflow.com/questions/16358796/does-asset-exist-in-any-api

반응형