기본적으로 List와 Set은 모두 인터페이스이며 Collection 인터페이스를 상속합니다. 우리가 자주 사용하는 ArrayList 및 HashSet은 각각 List 및 Set 인터페이스를 상속하므로 실제 애플리케이션에서 사용하기 위해 실제 유형을 지정할 수 있습니다. 일반적으로 Map은 객체를 저장하는 데 사용됩니다. 물론 Map은 모두 삽입, 삭제 및 검색을 위한 인터페이스를 제공하고 Iterator 사용을 지원합니다. 그렇다면 List와 Set의 차이점은 무엇이며, 사용 시 어떻게 구별해야 할까요?
List와 Set의 차이점
(1) List와 Set의 매우 중요한 차이점은 List에서는 중복 요소를 허용하는지, Set에서는 중복 요소를 허용하지 않는지입니다. 동일한 요소가 삽입되어도 존재하게 됩니다. ArrayList와 HashSet에 각각 동일한 요소가 삽입된 것을 확인했습니다.
HashSet<String> hset = new HashSet<String>(); ArrayList<String> arrlst = new ArrayList<String>(); hset.add("hello"); hset.add("hello"); arrlst.add("hello"); arrlst.add("hello"); System.out.println("hset size: "+hset.size()+" toString: "+hset.toString()); System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());
실행 결과:
PS: JDK 소스 코드를 보면 HashMap을 통해 HashSet 구현이 완료된 것을 볼 수 있습니다.
Java 학습 영상 추천: Java 시작하기
(2) List와 Set의 또 다른 매우 중요한 차이점은 요소가 저장되는 순서와 관련이 있습니다. List는 순서가 있는 컬렉션이고 Set은 순서가 없는 컬렉션입니다. 목록은 요소가 삽입되는 순서를 유지합니다. 즉, 이전에 삽입된 요소의 인덱스는 나중에 삽입된 요소의 인덱스보다 작습니다. 세트는 삽입 순서를 유지하지 않습니다. 마찬가지로 확인해 보겠습니다.
HashSet<String> hset = new HashSet<String>(); ArrayList<String> arrlst = new ArrayList<String>(); hset.add("1"); hset.add("3"); hset.add("2"); arrlst.add("1"); arrlst.add("3"); arrlst.add("2"); System.out.println("hset size: "+hset.size()+" toString: "+hset.toString()); System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());
작업 결과:
PS: ArrayList는 개체 배열을 사용하여 개체를 저장하고 새 개체가 삽입될 때마다 HashSet의 크기만큼 삽입됩니다. , 앞서 언급했듯이 HashMap을 통해 구현됩니다. 저장된 객체는 HashMap의 키로 사용됩니다. 키가 동일하면 값이 대체됩니다. 물론 Set 인터페이스를 상속받은 SortedSet은 지정된 정렬 방식으로 요소를 저장할 수 있습니다.
(3) List는 첨자를 통해 접근할 수 있지만 Set은 접근할 수 없습니다.
List 인터페이스의 일반적인 구현 클래스에는 ArrayList, Vector 및 LinkedList가 포함되고 Set 인터페이스의 일반적인 구현 클래스에는 HashSet, TreeSet 및 LinkedHashSet이 포함됩니다.
더 많은 Java 관련 기사 추천: Java 입문 튜토리얼
위 내용은 Java 컬렉션의 집합 인터페이스와 목록 인터페이스의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!