JavaRush /Java Blog /Random-KO /커피 브레이크 #185. Java 컬렉션 프레임워크에 대한 종합 가이드

커피 브레이크 #185. Java 컬렉션 프레임워크에 대한 종합 가이드

Random-KO 그룹에 게시되었습니다
출처: Medium 이 튜토리얼은 Java Collection Framework에 포함된 다양한 클래스와 인터페이스의 작동을 더 잘 이해하는 데 도움이 됩니다. 커피 브레이크 #185.  Java 컬렉션 프레임워크에 대한 종합 가이드 - 1Java 컬렉션은 객체 그룹을 저장하고 관리하기 위한 통합 아키텍처를 제공하는 프레임워크입니다. 핵심은 Java 언어로 객체 컬렉션을 표현하고 조작하는 표준 방법을 제공하는 클래스 및 인터페이스 세트입니다. 프레임워크는 또한 List, Set 및 Map과 같이 일반적으로 사용되는 데이터 구조를 구현하는 데 도움이 됩니다. Java Collection Framework에는 여러 인터페이스와 클래스가 포함되어 있습니다. 다음은 그 중 일부 목록입니다.

인터페이스

Java Collection Framework의 인터페이스는 컬렉션에서 수행할 수 있는 일반적인 동작과 작업을 정의합니다. 여기에는 항목 추가 또는 제거, 컬렉션의 항목 반복 등이 포함됩니다.
  • 컬렉션 : 요소라고 알려진 개체 그룹을 나타내는 컬렉션 계층 구조의 루트 인터페이스입니다.
  • 목록 : 복제를 허용하는 순서가 지정된 요소 모음입니다.
  • Set : 중복을 허용하지 않는 요소의 모음입니다.
  • Map : 각 키가 고유한 키-값 쌍의 모음입니다.
  • 큐(Queue) : 큐는 FIFO(선입선출) 순서로 요소를 저장하는 데 사용되는 데이터 구조입니다.
이 목록에는 모든 것이 포함되어 있지 않으며 Java Collection Framework에서 가장 많이 사용되는 인터페이스만 포함되어 있습니다. 이제 각각에 대해 자세히 살펴보겠습니다.

수집

컬렉션은 해당 요소로 알려진 개체 그룹입니다. 이는 다른 개체에 대한 참조를 포함할 수 있는 개체입니다. Collection 인터페이스는 컬렉션 계층 구조의 루트입니다. 이는 Java 컬렉션 프레임워크의 모든 컬렉션에 대한 기본 인터페이스입니다. add() , Remove()Contains() 와 같이 모든 컬렉션에서 구현되어야 하는 기본 메서드를 정의합니다 . 다음은 Java Collection Framework에서 컬렉션을 사용하는 예입니다. 여기서 Collection 인터페이스는 컬렉션에서 요소를 추가하고 제거하는 데 사용됩니다.
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        // Создаем новую коллекцию
        Collection<String> stringCollection = new ArrayList<>();

        // Добавляем несколько элементов в коллекцию
        stringCollection.add("hello");
        stringCollection.add("world");
        stringCollection.add("foo");
        stringCollection.add("bar");

        // Печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());

        // Удаляем элемент из коллекции
        stringCollection.remove("foo");

        // Опять печатаем число элементов в коллекции
        System.out.println("Number of elements: " + stringCollection.size());
    }
}
출력은 다음과 같습니다
요소수: 4 요소수: 3
보시다시피 Collection 인터페이스는 객체 컬렉션으로 일반적인 작업을 수행하는 간단하고 편리한 방법입니다. Java에서 컬렉션 작업을 할 때 시작점으로 자주 사용됩니다. Java 컬렉션 프레임워크에는 다양한 유형의 컬렉션에 대한 공통 동작을 정의하는 여러 인터페이스가 포함되어 있습니다. 그 중 일부는 java.util.Collection 인터페이스 그룹 의 일부입니다 .
  • java.util.List
  • java.util.set
  • java.util.큐

java.util.List

목록은 순서가 지정된 개체 모음이며 각 요소는 목록에서 특정 위치를 차지합니다. List 인터페이스는 Collection 인터페이스를 확장하고 목록에서의 위치에 따라 요소에 액세스하는 메서드, 목록을 검색하고 정렬하는 메서드 등 목록 작업을 위한 여러 메서드를 추가합니다. 목록에는 중복 요소가 포함될 수 있으며 이러한 요소는 목록에서의 위치에 따라 액세스할 수 있습니다. 다음은 목록 인터페이스를 사용하여 목록의 항목을 추가, 제거 및 액세스하는 예입니다.
import java.util.List;
import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        // Создаем новый список
        List<String> stringList = new ArrayList<>();

        // Добавляем несколько элементов в список
        stringList.add("India");
        stringList.add("UAE");
        stringList.add("London");
        stringList.add("US");

        // Печатаем первый элемент в списке
        System.out.println("First element: " + stringList.get(0));

        // Удаляем второй элемент из списка
        stringList.remove(1);

        // Печатаем второй элемент в списке
        System.out.println("Second element: " + stringList.get(1));
    }
}
결론:
첫 번째 요소: 인도 두 번째 요소: 런던
위에 표시된 대로 List 인터페이스는 순서가 지정된 요소 컬렉션을 사용하여 작업하는 편리한 방법을 제공합니다. 일반적으로 컬렉션의 요소 순서를 유지해야 하거나 목록의 인덱스로 요소에 액세스해야 할 때 사용됩니다.

java.util.Set

Java Collection Framework의 세트는 중복 요소를 허용하지 않는 순서가 지정되지 않은 고유 요소 세트입니다 . Set 인터페이스는 Collection 인터페이스를 확장하고 요소가 세트에 있는지 확인하는 메소드와 세트에서 요소를 추가 및 제거하는 메소드와 같은 여러 메소드를 추가합니다. 다음은 Java Collection Framework의 집합에서 요소를 추가하고 제거하기 위해 Set 인터페이스를 사용하는 예입니다.
import java.util.Set;
import java.util.HashSet;

public class SetExample {
    public static void main(String[] args) {
        // Создаем новый set
        Set<String> stringSet = new HashSet<>();

        // Добавляем несколько элементов в set
        stringSet.add("Jan");
        stringSet.add("Feb");
        stringSet.add("March");
        stringSet.add("April");

        // Проверяем наличие в set element "March"
        if (stringSet.contains("March")) {
            System.out.println("The set contains the element 'March'");
        }

        // Удаляем элемент "April" из set
        stringSet.remove("April");

        // Опять проверяем наличие element "April" в set
        if (!stringSet.contains("April")) {
            System.out.println("The set no longer contains the element 'April'");
        }
    }
}
결론:
세트에 '3월' 요소가 포함되어 있습니다. 세트에 더 이상 '4월' 요소가 포함되어 있지 않습니다.

java.util.큐

큐는 FIFO(선입선출) 순서로 요소를 저장하는 데 사용되는 데이터 구조입니다. 이는 대기열에 추가된 첫 번째 요소가 제거되는 첫 번째 요소가 됨을 의미합니다. 다음은 Java Collection Framework에서 대기열을 사용하는 방법의 예입니다.
// Creation очереди
Queue<String> queue = new LinkedList<>();

// Добавление элементов в очередь
queue.add("apple");
queue.add("banana");
queue.add("orange");
// Печатаем очередь
System.out.println("Queue: " + queue);
// Удаляем элемент из очереди
String element = queue.remove();
System.out.println("Removed element: " + element);
// Печатаем обновленную очередь
System.out.println("Queue: " + queue);
이 예에서는 문자열 대기열을 만들고 여기에 "사과", "바나나", "오렌지"라는 세 가지 요소를 추가했습니다. 그런 다음 대기열을 인쇄하여 현재 상태를 확인합니다. 다음으로 대기열에서 요소를 제거하고 이를 콘솔에 인쇄합니다. 마지막으로 제거된 요소가 더 이상 대기열에 없는지 확인하기 위해 업데이트된 대기열을 인쇄합니다.

지도

Java Collection Framework의 java.util.Map 인터페이스는 키를 값에 매핑하는 데 사용됩니다. 이를 통해 요소를 키-값 쌍으로 저장할 수 있으며 맵의 요소에 액세스하고, 수정하고, 반복하는 방법을 제공합니다. 다음은 Map 인터페이스를 사용하는 예입니다 .
// Создаем Map
 Map<String, Integer> map = new  HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
 System.out.println("Map: " + map);
// Получаем meaning для определенного ключа
int  value  = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
 System.out.println( "Map: " + map);
이 예에서는 "apple"은 1로 매핑되고 "banana"는 2로 매핑되며 "orange"는 3으로 매핑됩니다. 그런 다음 맵을 인쇄하여 현재 맵을 확인합니다. 의미. 그런 다음 "banana" 키의 값을 가져와서 콘솔에 인쇄합니다. 마지막으로 맵에서 "orange"에 대한 키-값 쌍을 제거하고 업데이트된 맵을 인쇄하여 제거된 요소가 더 이상 존재하지 않는지 확인합니다.

클래스

클래스는 컬렉션 인터페이스의 구체적인 구현입니다. 이는 프레임워크의 인터페이스에 의해 정의된 일반적인 동작 및 작업의 특정 구현을 제공합니다.
  • ArrayList : 크기 조정 가능한 배열을 사용하여 List 인터페이스를 구현합니다 .
  • LinkedList : 이중 연결 목록, ListDeque 인터페이스 구현 .
  • HashSet : 저장을 위해 해시 테이블을 사용하는 Set 구현입니다 .
  • TreeSet : 저장을 위해 트리를 사용하는 Set 구현입니다 .
  • HashMap : 저장을 위해 해시 테이블을 사용하는 Map 구현입니다 .
위 목록은 Java Collection Framework에서 가장 일반적으로 사용되는 클래스 중 하나입니다. 이제 이러한 클래스에 대한 자세한 설명을 살펴보겠습니다.

배열목록

Java 컬렉션의 java.util.ArrayList 클래스는 목록에 크기 조정 가능한 요소 배열을 저장하는 데 사용됩니다. 이는 배열을 사용하여 요소를 저장하고 목록의 요소에 액세스, 수정 및 반복하기 위한 효율적인 방법을 제공하는 java.util.List 인터페이스의 널리 사용되는 구현입니다. java.util.ArrayList 클래스는 해당 요소에 대한 빠른 무작위 액세스를 제공하지만 임의 위치에서의 삽입 및 제거는 느립니다. 다음은 Java Collection Framework에서 ArrayList 클래스를 사용하는 예입니다 .
// Создаем array list
List<String> list = new ArrayList<>();
// Добавляем элементы в array list
list.add("qa");
list.add("devops");
list.add("dev");
// Печатаем array list
System.out.println("Array list: " + list);
// Доступ к элементу по определенному индексу
String element = list.get(1);
System.out.println("Element at index 1: " + element);
// Удаление element из the array list
list.remove(1);
// Print the updated array list
System.out.println("Array list: " + list);
보시다시피, 우리는 문자열 배열을 만들고 여기에 "qa", "devops" 및 "dev"라는 세 가지 요소를 추가했습니다. 그런 다음 배열 목록을 인쇄하여 현재 상태를 확인했습니다. 그런 다음 인덱스 1의 요소에 액세스하여 콘솔에 인쇄합니다. 마지막으로 배열 목록에서 인덱스 1의 요소를 제거하고 업데이트된 배열 목록을 인쇄하여 제거된 요소가 더 이상 목록에 없는지 확인합니다.

링크드리스트

Java Collection Framework의 java.util.LinkedList 클래스는 AbstractList 클래스를 상속하고 ListDeque 인터페이스를 구현합니다 . 목록의 시작과 끝 부분에 있는 요소를 추가, 제거 및 액세스하는 효율적인 방법을 제공합니다. 이 클래스는 요소를 저장하기 위해 이중 연결 목록을 사용하는 List 인터페이스 의 구현이기도 합니다 . 임의의 위치에서 빠른 삽입 및 삭제를 제공하지만 해당 요소에 대한 무작위 액세스는 느립니다. 다음은 Java 컬렉션 프레임워크에서 LinkedList 클래스를 사용하는 방법의 예입니다 .
// Создаем linked list
List<String> list = new LinkedList<>();
// Добавляем элементы в linked list
list.add("selenium");
list.add("cypress");
list.add("playwright");
// Печатаем linked list
System.out.println("Linked list: " + list);
// Добавляем элемент в начало списка
list.add(0, "webdriver.io");
// Печатаем обновленный linked list
System.out.println("Linked list: " + list);
// Удаляем первый элемент в списке
list.remove(0);
// Еще раз печатаем обновленный linked list
System.out.println("Linked list: " + list);
이 예에서는 문자열의 연결된 목록을 만들고 여기에 "selenium", "cypress" 및 "playwright"라는 세 가지 요소를 추가했습니다. 그런 다음 연결된 목록을 인쇄하여 현재 상태를 확인합니다. 다음으로 목록 시작 부분에 "webdriver.io" 요소를 추가하고 업데이트된 연결 목록을 인쇄합니다. 마지막으로 목록에서 첫 번째 요소를 제거하고 업데이트된 연결 목록을 다시 인쇄하여 삭제된 요소가 더 이상 목록에 없는지 확인합니다.

해시세트

Java Collection Framework의 java.util.HashSet 클래스는 세트에 고유 요소 컬렉션을 저장하는 데 사용됩니다. 이는 java.util.Set 인터페이스의 해시 테이블 기반 구현을 제공합니다. 또한 빠른 삽입, 삭제 및 검색 기능을 제공하지만 해당 요소의 순서를 유지하지는 않습니다. 다음은 Java Collection Framework에서 HashSet 클래스를 사용하는 예입니다 .
// Создаем hash set
Set<String> set = new HashSet<>();

// Добавляем элементы в hash set
set.add("rose");
set.add("lily");
set.add("lotus");
// Попытка добавить повторяющийся элемент
set.add("rose");
// Печатаем hash set
System.out.println("Hash set: " + set);
// Удаляем элемент из hash set
set.remove("lily");
// Печать обновленного hash set
System.out.println("Hash set: " + set);
여기서 우리는 문자열의 해시 세트를 생성하고 여기에 "장미", "백합", "연꽃"이라는 세 가지 요소를 추가했습니다. 그런 다음 "rose" 요소를 다시 추가하려고 시도하지만 해시 세트가 중복을 허용하지 않으므로 추가되지 않습니다. 그런 다음 해시 세트를 인쇄하여 현재 상태를 확인합니다. 그런 다음 세트에서 "lily" 요소를 제거하고 세트의 업데이트된 해시를 인쇄하여 제거된 요소가 더 이상 세트에 없는지 확인합니다.

트리세트

Java Collection Framework의 java.util.TreeSet 클래스는 오름차순으로 정렬된 집합에 고유한 요소 컬렉션을 저장하는 데 사용됩니다. 중복 요소를 허용하지 않고 요소를 저장하기 위해 java.util.Set 인터페이스 의 트리 기반 구현을 제공합니다 . 클래스는 빠른 삽입, 삭제 및 검색을 제공하고 자연 순서 또는 비교자에 따라 요소의 순서를 유지합니다. 다음은 Java 컬렉션 프레임워크에서 TreeSet 클래스를 사용하는 방법의 예입니다 .
// Создаем tree set
Set<String> set = new TreeSet<>();

// Добавляем элементы в tree set
set.add("apple");
set.add("banana");
set.add("orange");
// Попытка добавить повторяющийся элемент
set.add("apple");
// Печатаем tree set
System.out.println("Tree set: " + set);
// Удаляем элемент из tree set
set.remove("banana");
// Печатаем обновленный tree set
System.out.println("Tree set: " + set);
이 예에서는 문자열 트리 집합을 만들고 여기에 "사과", "바나나", "오렌지"라는 세 가지 요소를 추가합니다. 그런 다음 "apple" 요소를 다시 추가하려고 시도하지만 트리 집합이 중복을 허용하지 않으므로 추가되지 않습니다. 그런 다음 트리 세트를 인쇄하여 현재 상태를 확인합니다. 트리 집합은 오름차순으로 정렬되므로 요소는 "apple", "banana" 및 "orange" 순서로 인쇄됩니다. 그런 다음 세트에서 "바나나" 요소를 제거하고 업데이트된 트리 세트를 인쇄하여 제거된 요소가 더 이상 세트에 없는지 확인합니다.

해시맵

Java Collection Framework의 java.util.HashMap 클래스는 키와 값의 매핑을 맵에 저장하는 데 사용됩니다. 이는 java.util.Map 인터페이스의 해시 테이블 기반 구현을 제공하고 요소를 키-값 쌍으로 저장할 수 있도록 합니다. 이 클래스는 빠른 삽입, 삭제 및 검색을 제공하지만 해당 요소의 순서를 유지하지 않습니다. 다음은 Java 컬렉션 프레임워크에서 HashMap 클래스를 사용하는 방법의 예입니다 .
// Создаем hash map
Map<String, Integer> map = new HashMap<>();

// Добавляем элементы в hash map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печатаем hash map
System.out.println("Hash map: " + map);
// Получаем meaning для определенного ключа
int value = map.get("banana");
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из hash map
map.remove("orange");
// Печатаем обновленный hash map
System.out.println("Hash map: " + map);
이 예에서는 정수 문자열의 해시 맵을 만들고 여기에 세 가지 요소를 추가합니다. "apple"은 1과 일치하고 "banana"는 2와 일치하며 "orange"는 3과 일치합니다. 그런 다음 해시 맵을 인쇄하여 현재 상태를 확인합니다. 그런 다음 "banana" 키의 값을 가져와서 콘솔에 인쇄합니다. 마지막으로 해시 맵에서 "주황색"에 대한 키-값 쌍을 제거하고 업데이트된 해시 맵을 인쇄하여 제거된 요소가 더 이상 그 안에 없는지 확인합니다.

결론

Java 컬렉션 프레임워크는 Java 프로그래밍 언어로 개체 컬렉션을 표현하고 조작하는 표준 방법을 제공하는 클래스 및 인터페이스 집합입니다. 이를 통해 개발자/테스터는 일관되고 효율적인 방식으로 개체 컬렉션을 사용하여 작업할 수 있습니다. 프레임워크는 컬렉션의 항목을 저장, 액세스 및 관리하는 방법을 제공하며 애플리케이션의 요구 사항에 따라 다양한 컬렉션 구현 간에 쉽게 전환할 수 있도록 합니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION