1. HashMap의 구현 원리에 대해 알려주세요.
HashMap 개요: HashMap은 해시 테이블을 기반으로 하는 Map 인터페이스의 비동기 구현입니다. 이 구현은 모든 선택적 매핑 작업을 제공하고 null 값과 null 키를 허용합니다. 이 클래스는 매핑의 순서를 보장하지 않으며, 특히 순서가 불변임을 보장하지 않습니다.
HashMap 데이터 구조: Java 프로그래밍 언어에는 가장 기본적인 두 가지 구조가 있습니다. 하나는 배열이고 다른 하나는 시뮬레이션된 포인터(참조)입니다. 이 두 가지 기본 구조를 사용하여 모든 데이터 구조를 구성할 수 있습니다. 예외. HashMap은 실제로 배열과 연결 목록의 조합인 "연결 목록 해시" 데이터 구조입니다.
(권장 튜토리얼: Quick Start with Java)
해시맵에 요소를 넣을 때 먼저 키의 해시코드를 기반으로 해시 값을 다시 계산하고, 해시맵에서 요소의 위치(아래 첨자)를 가져옵니다. 해시 값을 기반으로 하는 배열입니다. 배열이 이미 이 위치에 다른 요소를 저장하고 있는 경우 이 위치의 요소는 연결 목록 형식으로 저장되며 새로 추가된 요소는 체인의 선두에 배치됩니다. 체인의 끝에 배치된 첫 번째 추가 요소입니다. 배열의 이 위치에 요소가 없으면 배열의 해당 위치에 요소를 직접 배치하십시오.
HashMap의 구현은 Jdk 1.8에서 최적화되었습니다. 연결 목록의 노드 데이터가 8을 초과하면 연결 목록은 원래 O에서 쿼리 효율성을 향상시키기 위해 레드-블랙 트리로 변환됩니다. (n) to O(logn )
2. HashSet의 구현 원리에 대해 알려주세요.
HashSet의 최하위 레이어는 HashMap으로 구현됩니다
HashSet의 값은 HashMap의 키에 저장됩니다
HashMap의 값은 PRESENT
로 통일됩니다(관련 학습: 자바 공통 인터뷰 질문)
3 . ArrayList와 LinkedList의 차이점은 무엇입니까?
가장 분명한 차이점은 ArrrayList의 기본 데이터 구조가 배열이고 임의 액세스를 지원하는 반면 LinkedList의 기본 데이터 구조는 양방향 순환 연결 목록이며 임의 액세스를 지원하지 않는다는 것입니다. 첨자를 사용하여 요소에 액세스하려면 ArrayList의 시간 복잡도는 O(1)인 반면 LinkedList의 시간 복잡도는 O(n)입니다.
4. 배열과 목록을 어떻게 변환하나요?
목록을 배열로 변환: ArrayList의 toArray 메서드를 호출하세요.
배열을 리스트로 변환: 배열의 asList 메소드를 호출하세요.
5. ArrayList와 Vector의 차이점은 무엇인가요?
Vector는 동기화되지만 ArrayList는 동기화되지 않습니다. 그러나 반복하는 동안 목록을 변경하려는 경우 CopyOnWriteArrayList를 사용해야 합니다.
ArrayList는 Vector보다 빠릅니다. 동기화로 인해 과부하가 발생하지 않습니다.
ArrayList는 Collections 유틸리티 클래스를 사용하여 동기화된 목록과 읽기 전용 목록을 쉽게 얻을 수 있기 때문에 더욱 다양해졌습니다.
추천 비디오 튜토리얼: java 비디오 튜토리얼
위 내용은 2020 새로운 Java 면접 질문 - 컨테이너 (2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!