1. 개요

 
이 사용방법(예제)에서는 간단한 예제를 통해 Java에서 SetList

의 차이점에 대해 설명합니다.

2. 개념적 차이

 

List

와 

Set

은 모두 Java

Collections

의 멤버입니다 . 그러나 몇 가지 중요한 차이점이 있습니다.
  • List 에는 중복 항목 이 포함될 수 있지만 집합 에는 중복 항목이 포함될 수 없습니다 .
  • List삽입 순서를 유지하지만 세트 는 삽입 순서를 유지하거나 유지하지 않을 수 있습니다 .
  • 삽입 순서가 Set 에서 유지되지 않을 수 있으므로 List 에서와 같이 인덱스 기반 액세스를 허용하지 않습니다. 
LinkedHashSet 과 같이 순서를 유지 하는 몇 가지

Set

인터페이스  구현이 있다는 점에 유의하십시오 .

3. 코드 예

 

3.1. 중복 허용

 

List

에는 중복 항목을 추가할 수 있습니다. 그러나

Set

용이 아닙니다 .
@Test
public void givenList_whenDuplicates_thenAllowed(){
    List<Integer> integerList = new ArrayList<>();
    integerList.add(2);
    integerList.add(3);
    integerList.add(4);
    integerList.add(4);
    assertEquals(integerList.size(), 4);
}
@Test
public void givenSet_whenDuplicates_thenNotAllowed(){
    Set<Integer> integerSet = new HashSet<>();
    integerSet.add(2);
    integerSet.add(3);
    integerSet.add(4);
    integerSet.add(4);
    assertEquals(integerSet.size(), 3);
}

3.2. 게재 신청서 유지

 

Set

은 구현 에 따라 순서를 유지합니다. 예를 들어

HashSet

은 순서를 유지한다고 보장되지 않지만 

LinkedHashSet

은 유지됩니다.

LinkedHashSet

을 사용하여 주문하는 예를 살펴보겠습니다 .
@Test
public void givenSet_whenOrdering_thenMayBeAllowed(){
    Set<Integer> set1 = new LinkedHashSet<>();
    set1.add(2);
    set1.add(3);
    set1.add(4);
    Set<Integer> set2 = new LinkedHashSet<>();
    set2.add(2);
    set2.add(3);
    set2.add(4);
    Assert.assertArrayEquals(set1.toArray(), set2.toArray());
}

Set

순서를 유지한다고 보장되지 않으므로 인덱싱할 수 없습니다.

4. 결론

 
이 예제에서는 Java에서

List

와 

Set

의 차이점을 보았습니다  .소스 코드는

GitHub에서

사용할 수 있습니다 .
Generic footer banner