logo

Java의 컬렉션

  1. Java 수집 프레임워크
  2. 수집 프레임워크의 계층 구조
  3. 컬렉션 인터페이스
  4. 반복자 인터페이스

그만큼 Java의 컬렉션 객체 그룹을 저장하고 조작하기 위한 아키텍처를 제공하는 프레임워크입니다.

Java 컬렉션은 검색, 정렬, 삽입, 조작, 삭제 등 데이터에 대해 수행하는 모든 작업을 수행할 수 있습니다.

Java 컬렉션은 단일 개체 단위를 의미합니다. Java Collection 프레임워크는 다양한 인터페이스(Set, List, Queue, Deque)와 클래스( 배열목록 벡터, 링크드리스트 , 우선순위 대기열 , HashSet, LinkedHashSet, TreeSet).

Java의 컬렉션이란 무엇입니까?

컬렉션은 개체의 단일 단위, 즉 그룹을 나타냅니다.

Java의 프레임워크란 무엇입니까?

  • 기성 아키텍처를 제공합니다.
  • 이는 클래스와 인터페이스 집합을 나타냅니다.
  • 선택 사항입니다.

컬렉션 프레임워크란?

컬렉션 프레임워크는 개체 그룹을 저장하고 조작하기 위한 통합 아키텍처를 나타냅니다. 그것은 다음과 같습니다:

  1. 인터페이스와 그 구현, 즉 클래스
  2. 연산

당신은 알고 있나요?
  • 컬렉션의 요소를 반복하는 두 가지 방법은 무엇입니까?
  • 컬렉션 프레임워크에서 ArrayList와 LinkedList 클래스의 차이점은 무엇입니까?
  • 컬렉션 프레임워크에서 ArrayList와 Vector 클래스의 차이점은 무엇입니까?
  • 컬렉션 프레임워크에서 HashSet과 HashMap 클래스의 차이점은 무엇입니까?
  • HashMap과 Hashtable 클래스의 차이점은 무엇입니까?
  • 컬렉션 프레임워크에서 Iterator와 Enumeration 인터페이스의 차이점은 무엇입니까?
  • 객체의 요소를 어떻게 정렬할 수 있나요? Comparable 인터페이스와 Comparator 인터페이스의 차이점은 무엇입니까?
  • hashcode() 메소드는 무엇입니까?
  • Java 컬렉션과 Java 컬렉션의 차이점은 무엇입니까?

수집 프레임워크의 계층 구조

Collection 프레임워크의 계층 구조를 살펴보겠습니다. 그만큼 java.util 패키지에는 모든 것이 포함되어 있습니다. 클래스 그리고 인터페이스 컬렉션 프레임워크용.

Java 컬렉션 프레임워크의 계층 구조

수집 방법 인터페이스

Collection 인터페이스에는 많은 메소드가 선언되어 있습니다. 그것들은 다음과 같습니다:

아니요.방법설명
1공개 부울 추가(E e)이 컬렉션에 요소를 삽입하는 데 사용됩니다.
2공개 부울 addAll(컬렉션 c)호출 컬렉션에 지정된 컬렉션 요소를 삽입하는 데 사용됩니다.
공개 부울 제거(객체 요소)컬렉션에서 요소를 삭제하는 데 사용됩니다.
4공개 부울 제거All(컬렉션 c)호출 컬렉션에서 지정된 컬렉션의 모든 요소를 ​​삭제하는 데 사용됩니다.
5기본 부울 RemoveIf(조건자 필터)지정된 조건자를 만족하는 컬렉션의 모든 요소를 ​​삭제하는 데 사용됩니다.
6공개 부울 keepAll(컬렉션 c)지정된 컬렉션을 제외한 호출 컬렉션의 모든 요소를 ​​삭제하는 데 사용됩니다.
7공개 정수 크기()컬렉션의 총 요소 수를 반환합니다.
8공공 무효 클리어()컬렉션에서 총 요소 수를 제거합니다.
9공개 부울 포함(객체 요소)요소를 검색하는 데 사용됩니다.
10공개 부울 containAll(컬렉션 c)컬렉션에서 지정된 컬렉션을 검색하는 데 사용됩니다.
열하나공개 반복자 iterator()반복자를 반환합니다.
12공개 객체[] toArray()컬렉션을 배열로 변환합니다.
13공개 T[] toArray(T[] a)컬렉션을 배열로 변환합니다. 여기서 반환된 배열의 런타임 유형은 지정된 배열의 런타임 유형입니다.
14공개 부울 isEmpty()컬렉션이 비어 있는지 확인합니다.
열 다섯기본 스트림 parallelStream()컬렉션을 소스로 사용하여 병렬 스트림을 반환합니다.
16기본 스트림 stream()컬렉션을 소스로 사용하여 순차적 스트림을 반환합니다.
17기본 분할기 Spliterator()컬렉션의 지정된 요소에 대해 Spliterator를 생성합니다.
18공개 부울 같음(객체 요소)두 컬렉션과 일치합니다.
19공개 int hashCode()컬렉션의 해시 코드 번호를 반환합니다.

반복자 인터페이스

Iterator 인터페이스는 순방향으로만 요소를 반복하는 기능을 제공합니다.

Iterator 인터페이스의 메소드

Iterator 인터페이스에는 세 가지 메서드만 있습니다. 그들은:

아니요.방법설명
1공개 부울 hasNext()반복자에 더 많은 요소가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
2공개 객체 next()요소를 반환하고 커서 포인터를 다음 요소로 이동합니다.
공공 무효 제거()반복자가 반환한 마지막 요소를 제거합니다. 덜 사용됩니다.

반복 가능한 인터페이스

Iterable 인터페이스는 모든 컬렉션 클래스의 루트 인터페이스입니다. Collection 인터페이스는 Iterable 인터페이스를 확장하므로 Collection 인터페이스의 모든 하위 클래스도 Iterable 인터페이스를 구현합니다.

여기에는 하나의 추상 메서드만 포함되어 있습니다. 즉.,

정수를 문자열로 변환 자바
 Iterator iterator() 

T 유형의 요소에 대한 반복자를 반환합니다.


수집 인터페이스

Collection 인터페이스는 컬렉션 프레임워크의 모든 클래스에 의해 구현되는 인터페이스입니다. 모든 컬렉션에 포함될 메서드를 선언합니다. 즉, Collection 인터페이스는 컬렉션 프레임워크가 의존하는 기반을 구축한다고 말할 수 있습니다.

Collection 인터페이스의 메소드 중 일부는 Boolean add(Object obj), Boolean addAll(Collection c), voidclear() 등이며 Collection 인터페이스의 모든 하위 클래스에서 구현됩니다.


목록 인터페이스

List 인터페이스는 Collection 인터페이스의 하위 인터페이스입니다. 이는 순서가 지정된 개체 컬렉션을 저장할 수 있는 목록 유형 데이터 구조를 금지합니다. 중복된 값이 있을 수 있습니다.

목록 인터페이스는 ArrayList, LinkedList, Vector 및 Stack 클래스로 구현됩니다.

List 인터페이스를 인스턴스화하려면 다음을 사용해야 합니다.

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

List 인터페이스에는 목록의 요소를 삽입, 삭제 및 액세스하는 데 사용할 수 있는 다양한 메서드가 있습니다.

List 인터페이스를 구현하는 클래스는 다음과 같습니다.


배열목록

ArrayList 클래스는 List 인터페이스를 구현합니다. 동적 배열을 사용하여 다양한 데이터 유형의 중복 요소를 저장합니다. ArrayList 클래스는 삽입 순서를 유지하며 동기화되지 않습니다. ArrayList 클래스에 저장된 요소는 무작위로 액세스할 수 있습니다. 다음 예를 고려하십시오.

 import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Ravi Vijay Ravi Ajay 

링크드리스트

LinkedList는 Collection 인터페이스를 구현합니다. 요소를 저장하기 위해 내부적으로 이중 연결 목록을 사용합니다. 중복된 요소를 저장할 수 있습니다. 삽입 순서를 유지하며 동기화되지 않습니다. LinkedList에서는 이동이 필요하지 않기 때문에 조작이 빠릅니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Ravi Vijay Ravi Ajay 

벡터

벡터는 동적 배열을 사용하여 데이터 요소를 저장합니다. ArrayList와 유사합니다. 그러나 이는 동기화되며 컬렉션 프레임워크의 일부가 아닌 많은 메서드를 포함합니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Ayush Amit Ashish Garima 

스택

스택은 Vector의 하위 클래스입니다. 후입선출(Last In First Out) 방식의 데이터 구조, 즉 Stack을 구현합니다. 스택에는 Vector 클래스의 모든 메서드가 포함되어 있으며 해당 속성을 정의하는 boolean push(), boolean peek(), boolean push(object o)와 같은 메서드도 제공합니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Ayush Garvit Amit Ashish 

대기열 인터페이스

대기열 인터페이스는 선입선출 순서를 유지합니다. 처리하려는 요소를 보유하는 데 사용되는 순서가 지정된 목록으로 정의할 수 있습니다. Queue 인터페이스를 구현하는 PriorityQueue, Deque 및 ArrayDeque와 같은 다양한 클래스가 있습니다.

대기열 인터페이스는 다음과 같이 인스턴스화될 수 있습니다.

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

Queue 인터페이스를 구현하는 다양한 클래스가 있으며 그 중 일부는 아래에 나와 있습니다.


우선순위 대기열

PriorityQueue 클래스는 Queue 인터페이스를 구현합니다. 우선순위에 따라 처리될 요소나 개체를 보유합니다. PriorityQueue는 null 값이 대기열에 저장되는 것을 허용하지 않습니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } } 

산출:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

그리고 인터페이스

Deque 인터페이스는 Queue 인터페이스를 확장합니다. Deque에서는 양쪽 요소를 제거하고 추가할 수 있습니다. Deque는 양쪽 끝에서 작업을 수행할 수 있는 이중 끝 큐를 나타냅니다.

Deque는 다음과 같이 인스턴스화될 수 있습니다.

 Deque d = new ArrayDeque(); 

ArrayDeque

ArrayDeque 클래스는 Deque 인터페이스를 구현합니다. 이는 Deque를 사용하는 것을 용이하게 합니다. 대기열과 달리 양쪽 끝에서 요소를 추가하거나 삭제할 수 있습니다.

ArrayDeque는 ArrayList 및 Stack보다 빠르며 용량 제한이 없습니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } } 

산출:

 Gautam Karan Ajay 

인터페이스 설정

Java의 Set Interface는 java.util 패키지에 있습니다. Collection 인터페이스를 확장합니다. 이는 중복 항목을 저장할 수 없는 순서가 지정되지 않은 요소 집합을 나타냅니다. Set에는 최대 하나의 null 값을 저장할 수 있습니다. Set은 HashSet, LinkedHashSet 및 TreeSet에 의해 구현됩니다.

Set은 다음과 같이 인스턴스화될 수 있습니다.

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

해시세트

HashSet 클래스는 Set 인터페이스를 구현합니다. 저장을 위해 해시 테이블을 사용하는 컬렉션을 나타냅니다. 해싱은 HashSet에 요소를 저장하는 데 사용됩니다. 독특한 아이템이 포함되어 있습니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Vijay Ravi Ajay 

LinkedHashSet

LinkedHashSet 클래스는 Set 인터페이스의 LinkedList 구현을 나타냅니다. HashSet 클래스를 확장하고 Set 인터페이스를 구현합니다. HashSet과 마찬가지로 고유한 요소도 포함합니다. 삽입 순서를 유지하고 null 요소를 허용합니다.

다음 예를 고려하십시오.

자바 문자열 배열
 import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Ravi Vijay Ajay 

SortedSet 인터페이스

SortedSet은 해당 요소에 대한 전체 순서를 제공하는 Set 인터페이스의 대안입니다. SortedSet의 요소는 증가하는(오름차순) 순서로 정렬됩니다. SortedSet은 요소의 자연스러운 순서를 금지하는 추가 메서드를 제공합니다.

SortedSet은 다음과 같이 인스턴스화될 수 있습니다.

 SortedSet set = new TreeSet(); 

트리세트

Java TreeSet 클래스는 저장을 위해 트리를 사용하는 Set 인터페이스를 구현합니다. HashSet과 마찬가지로 TreeSet에도 고유한 요소가 포함되어 있습니다. 그러나 TreeSet의 접근 및 검색 시간은 상당히 빠릅니다. TreeSet의 요소는 오름차순으로 저장됩니다.

다음 예를 고려하십시오.

 import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } } 

산출:

 Ajay Ravi Vijay 
Java 컬렉션 프레임워크에서 무엇을 배울 것인가
  1. ArrayList 클래스
  2. 링크드리스트 클래스
  3. 목록 인터페이스
  4. HashSet 클래스
  5. LinkedHashSet 클래스
  6. TreeSet 클래스
  7. PriorityQueue 클래스
  8. 지도 인터페이스
  9. 해시맵 클래스
  10. LinkedHashMap 클래스
  11. 트리맵 클래스
  12. 해시테이블 클래스
  13. 정렬
  14. 유사한 인터페이스
  15. 비교기 인터페이스
  16. Java의 속성 클래스