자바 컨테이너 클래스와 컬렉션의 차이점은 무엇입니까?

컨테이너 (컨테이너)

Spring 은 객체의 라이프 사이클과 객체 간의 종속성을 관리하는 컨테이너 기능을 제공합니다. 구성 파일 (일반적으로 XML) 을 사용하여 객체의 이름, 생성 방법 (원형 또는 단일 예), 생성 후 객체의 속성으로 설정해야 하는 객체 등을 정의할 수 있습니다. 컨테이너를 시작하면 객체를 생성하거나 객체와 객체를 설정하기 위해 프로그램 코드를 작성하지 않고도 모든 객체에 직접 액세스할 수 있습니다.

좀 더 직설적으로 말하다: 용기는 Java 가 작성한 프로그램이다. 개체 관계를 관리하기 위해 프로그램을 직접 작성해야 한다는 것이 밝혀졌습니다. 이제 컨테이너가 자동으로 도와 줄 것입니다.

일반 컨테이너: WebSphere, WebLogic, Resin, Tomcat.

컬렉션 클래스는 java.util 패키지에 저장됩니다.

컬렉션 클래스는 객체 자체가 아니라 객체에 대한 참조를 저장합니다. 편의를 위해 컬렉션의 객체를 컬렉션의 객체에 대한 참조라고 합니다.

컬렉션에는 컬렉션, 리스트 및 매핑의 세 가지 주요 유형이 있습니다.

(1) 세트

컬렉션은 가장 간단한 컬렉션입니다. 그 오브젝트는 특정 방식으로 정렬되지 않고 주머니에 물건을 넣는 것처럼 컬렉션에 간단히 추가됩니다.

컬렉션의 구성원에 대한 액세스 및 작업은 컬렉션의 객체에 대한 참조를 통해 수행되므로 컬렉션에 중복 객체가 없어야 합니다.

컬렉션에는 TreeSet 과 같은 정렬 및 기타 기능을 구현할 수있는 많은 변형이 있습니다. 컬렉션에 객체를 추가하는 작업은 비교 규칙에 따라 정렬된 객체 시퀀스에 삽입됩니다. SortedSet 인터페이스를 구현합니다. 즉, 객체 비교를 추가하는 방법입니다. 컬렉션의 객체를 반복하여 오름차순 객체 컬렉션을 얻을 수 있습니다.

(2) 목록

리스트의 주요 특징은 오브젝트가 선형으로 저장되고 특정 순서가 없고 시작과 끝만 있다는 것입니다. 물론, 그것은 완전히 무질서한 집합과는 다르다.

목록은 데이터 구조에서 배열과 벡터, 연결된 목록, 스택 및 대기열로 표시됩니다.

List 를 구현하는 collection 클래스는 일상 업무에서 자주 사용됩니다. 다음 노트에 자세히 설명되어 있습니다.

(3) 제도

매핑은 집합이나 목록과는 크게 다르며 맵의 각 항목은 쌍을 이룹니다. 맵에 저장되는 각 개체에는 맵에서 객체가 저장되는 위치를 결정하는 관련 키 개체가 있습니다. 객체를 검색할 때 사전에서 단어를 찾는 것처럼 적절한 키를 제공해야 합니다. 키워드는 고유해야 합니다.

키워드 자체는 객체가 저장되는 위치를 결정할 수 없습니다. 해시 코드라는 정수 값을 생성하려면 해시 기술을 통해 처리해야 합니다. Hash 코드는 일반적으로 맵에 할당된 메모리 영역의 시작 위치를 기준으로 키워드/객체 쌍이 저장되는 위치를 결정하는 오프셋으로 사용됩니다. 해시 프로세스는 지정된 범위 내에서 균일하게 분포된 값을 생성해야 하며 각 키워드는 서로 다른 해시 코드를 얻어야 합니다.

컬렉션 클래스 소개

Java.util 에는 컬렉션 객체를 관리하는 데 사용할 수 있는 * * * 13 클래스가 있습니다. 컬렉션, 리스트 또는 지도와 같은 컬렉션을 지원합니다. 다음은 이러한 클래스에 대한 간단한 소개입니다.

설정:

HashSet: HashMap 을 사용하여 컬렉션을 구현합니다. 컬렉션은 무질서한 것으로 정의되지만 객체를 매우 효율적으로 찾을 수 있는 방법이 있어야 합니다. HashMap 객체를 사용하여 컬렉션 저장 및 검색을 수행하는 것은 고정 시간 내에 수행됩니다.

TreeSet: 콜렉션에서 객체를 오름차순으로 정렬하는 콜렉션 구현. 즉, TreeSet 객체에서 가져온 첫 번째 반복자는 오름차순으로 객체를 제공합니다. TreeSet 클래스는 트리 그래프를 사용합니다.

목록:

Vector: 배열과 비슷한 테이블을 구현하여 필요한 요소를 수용할 수 있도록 용량을 자동으로 늘립니다. 아래 첨자를 사용하여 객체를 저장하고 검색하는 것은 표준 배열에서와 같습니다. 반복자를 사용하여 벡터에서 객체를 검색할 수도 있습니다. Vector 는 유일한 동기화 컨테이너 클래스입니다. 두 개 이상의 스레드가 동시에 액세스될 때 성능도 좋습니다.

Stack: 이 클래스는 Vector 에서 파생되었으며 stack 을 구현하는 메서드가 추가되었습니다. 후입선출 스토리지 구조.

LinkedList: 연결된 목록을 구현합니다. 이 클래스에서 정의한 연결된 목록도 스택이나 대기열처럼 사용할 수 있습니다.

ArrayList: 크기가 가변적이고 연결된 테이블처럼 액세스할 수 있는 배열을 구현합니다. Vector 클래스와 유사한 기능을 제공하지만 동기화되지는 않습니다.

매핑:

HashTable: 이미지를 구현하려면 모든 키가 비어 있지 않아야 합니다. 효율적으로 작업하려면 키를 정의하는 클래스가 hashcode () 메서드와 equal () 메서드를 구현해야 합니다. 이 클래스는 이전 Java 구현의 상속이며 일반적으로 이미지를 구현하는 다른 클래스에 더 잘 사용할 수 있습니다.

HashMap: 빈 객체를 저장할 수 있는 image 를 구현합니다. 키가 비어 있을 수 있습니다 (키는 고유해야 하기 때문에, 물론 하나만 있을 수 있습니다).

WeakHashMap: 일반적으로 키가 더 이상 객체에 의해 참조되지 않으면 키/개체 쌍이 폐기되는 이미지를 구현합니다. 이는 이미지의 키가 키/객체 쌍의 수명 주기를 유지하는 HashMap 와 대조됩니다. 이미지를 사용하는 프로그램에는 더 이상 키에 대한 참조가 없으므로 객체를 검색할 수 없습니다.

TreeMap: 이러한 이미지를 구현하기 위해 객체는 키를 통해 오름차순으로 정렬됩니다.

Set 와 List 는 모두 공용 인터페이스 컬렉션에서 확장되므로 컬렉션 유형의 변수에서 모두 참조할 수 있습니다. 즉, 매핑 클래스를 제외한 모든 목록 세트나 컬렉션을 이런 방식으로 참조할 수 있습니다. 그러나 목록을 맵에서 사용할 수 있기 때문에 완전히 제외되지는 않습니다. 따라서 리스트 또는 어셈블리를 메서드에 전달하는 표준 방법은 어셈블리 유형의 매개변수를 사용하는 것입니다.