1. 개요
의 차이점에 대해 설명합니다.
2. 개념적 차이
List
와Set
은 모두 JavaCollections
의 멤버입니다 . 그러나 몇 가지 중요한 차이점이 있습니다.- List 에는 중복 항목 이 포함될 수 있지만 집합 에는 중복 항목이 포함될 수 없습니다 .
- List 은 삽입 순서를 유지하지만 세트 는 삽입 순서를 유지하거나 유지하지 않을 수 있습니다 .
- 삽입 순서가 Set 에서 유지되지 않을 수 있으므로 List 에서와 같이 인덱스 기반 액세스를 허용하지 않습니다.
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. 결론
List
와Set
의 차이점을 보았습니다 .소스 코드는 사용할 수 있습니다 .