[java] Java에서 목록을 세트로 변환하는 가장 쉬운 방법

Lista Set를 Java 로 변환하는 가장 쉬운 방법은 무엇입니까 ?



답변

Set<Foo> foo = new HashSet<Foo>(myList);


답변

sepp2k에 동의하지만 중요한 다른 세부 정보가 있습니다.

new HashSet<Foo>(myList);

중복되지 않은 분류되지 않은 세트를 제공합니다. 이 경우 객체에서 .equals () 메서드를 사용하여 복제를 식별합니다. 이것은 .hashCode () 메소드와 함께 사용됩니다. (평등에 대한 자세한 내용은 여기 를 참조 하십시오 )

정렬 된 세트를 제공하는 대안은 다음과 같습니다.

new TreeSet<Foo>(myList);

Foo가 Comparable을 구현하는 경우 작동합니다. 그렇지 않은 경우 비교기를 사용할 수 있습니다.

Set<Foo> lSet = new TreeSet<Foo>(someComparator);
lSet.addAll(myList);

고유성을 보장하기 위해 비교 대상 인터페이스의 compareTo () 또는 비교기의 compare ()에 따라 다릅니다. 따라서 고유성에 관심이있는 경우 HashSet을 사용하십시오. 정렬 후 TreeSet을 고려하십시오. (기억하십시오 : 나중에 최적화하십시오!) 시간 효율성이 중요한 경우 공간 효율성이 중요한 경우 HashSet을 사용하는 경우 TreeSet을보십시오. Trove (및 기타 위치)를 통해보다 효율적인 Set 및 Map 구현을 사용할 수 있습니다.


답변

Guava 라이브러리 를 사용하는 경우 :

Set<Foo> set = Sets.newHashSet(list);

또는 더 나은 :

Set<Foo> set = ImmutableSet.copyOf(list);


답변

Java 8을 사용하면 스트림을 사용할 수 있습니다.

List<Integer> mylist = Arrays.asList(100, 101, 102);
Set<Integer> myset = mylist.stream().collect(Collectors.toSet()));


답변

Set<E> alphaSet  = new HashSet<E>(<your List>);

또는 완전한 예

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class ListToSet
{
    public static void main(String[] args)
    {
        List<String> alphaList = new ArrayList<String>();
        alphaList.add("A");
        alphaList.add("B");
        alphaList.add("C");
        alphaList.add("A");
        alphaList.add("B");
        System.out.println("List values .....");
        for (String alpha : alphaList)
        {
            System.out.println(alpha);
        }
        Set<String> alphaSet = new HashSet<String>(alphaList);
        System.out.println("\nSet values .....");
        for (String alpha : alphaSet)
        {
            System.out.println(alpha);
        }
    }
}


답변

set으로 변환하기 전에 Null 검사를 수행합니다.

if(myList != null){
Set<Foo> foo = new HashSet<Foo>(myList);
}


답변

당신은로 변환 List<>할 수 있습니다Set<>

Set<T> set=new HashSet<T>();

//Added dependency -> If list is null then it will throw NullPointerExcetion.

Set<T> set;
if(list != null){
    set = new HashSet<T>(list);
}