"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 자바 컬렉션 프레임워크

자바 컬렉션 프레임워크

2024-11-07에 게시됨
검색:446

Que Java 컬렉션 프레임워크란 무엇입니까?

Ans Java Collection 프레임워크는 가장 일반적으로 사용되는 데이터 구조 및 알고리즘의 최적화된 구현 세트를 제공하는 강력한 내장 라이브러리입니다. Java 애플리케이션을 구축하고 실제 소프트웨어 개발 문제를 해결하는 데 널리 활용됩니다. 도전 과제.


Java 컬렉션 프레임워크의 장점은 무엇입니까?

답변 Java Collection 프레임워크의 장점 중 일부는 다음과 같습니다.

  1. 통합 아키텍처 : 모든 데이터 구조는 반복 가능한 인터페이스 및 컬렉션 인터페이스와 같은 인터페이스에서 파생되어 공통 구현 감각을 제공합니다.
  2. 사용 편의성 : 사전 구축된 데이터 구조와 알고리즘을 제공하여 개발 프로세스를 단순화합니다. 개발자는 일반적으로 사용되는 데이터 구조와 표준 알고리즘을 수동으로 구현하고 최적화하는 대신 비즈니스 로직에 더 집중할 수 있습니다.
  3. 유연성: 기본 데이터 구조를 변경하려는 경우 데이터 구조를 변경하면 데이터 검색 및 액세스 패턴(주로)이 변경될 것이라는 걱정 없이 쉽게 변경할 수 있습니다.
  4. 스레드 안전성 : Java는 서로 다른 스레드에서 프로세스를 개별적으로 실행하는 방법을 제공하므로 Java Collection Framework는 다중 스레드 환경 및 단일 스레드 애플리케이션에서 실행할 수 있는 다양한 클래스를 제공합니다.

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

JAVA COLLECTION FRAMEWORK


반복 가능한 인터페이스
Java의 Iterable 인터페이스는 컬렉션 프레임워크의 핵심 구성 요소입니다. 반복할 수 있는 모든 컬렉션 유형에 대한 루트 인터페이스입니다. Iterable 인터페이스를 구현하면 객체가 "for-each 루프"(향상된 for 루프라고도 함)의 대상이 될 수 있습니다.
또한 이 반복 가능한 인터페이스를 구현하는 모든 데이터 구조의 순방향 반복에 사용할 수 있는 반복자 개체를 제공합니다.

FOR EACH LOOP 사용 예(ENHANCED FOR LOOP)

내부적으로 ArrayList는 List를 구현하고 List 인터페이스는 Collection 인터페이스를 확장하고 Collection 인터페이스는 Iterable 인터페이스를 확장합니다.

List list = new ArrayList();//데이터 구조 선언
list.add("Java");//요소 추가
list.add("컬렉션");//요소 추가
list.add("프레임워크");//요소 추가
for (String element : list) {//향상된 for 루프
를 사용하여 반복 System.out.println(요소);
}

ITERABLE 객체를 사용한 예

Iterator 반복자 = list.iterator();
while (iterator.hasNext()) {
문자열 요소 = iterator.next();
System.out.println(요소);
}

따라서 반복 가능한 인터페이스를 구현하고 next,hasNext 및 제거 메소드를 재정의하는 사용자 정의 반복 가능을 만들 수 있습니다. 다음은 동일한 예입니다.

import java.util.Iterator;
class CustomIterable implements Iterable {
    private final int[] numbers = {1, 2, 3, 4, 5};

    @Override
    public Iterator iterator() {
        return new Iterator() {
            private int index = 0;
            private int lastReturnedIndex = -1;

            @Override
            public boolean hasNext() {
                return index 



메모 :

  1. Java의 반복자는 실패하지 않습니다. 즉, 반복하는 동안 컬렉션이 수정되면(반복자의 자체 Remove() 메서드를 통한 경우는 제외) ConcurrentModificationException.
  2. 이 발생합니다.
  3. remove() 메서드는 요소만 제거할 수 있으며 next() 호출당 한 번만 호출해야 합니다. 그렇지 않으면 IllegalStateException이 발생합니다.

컬렉션 인터페이스

이것은 데이터 구조와 내부 구현이 유연해지는 인터페이스입니다. 대부분의 모든 클래스는 컬렉션 참조에 할당된 객체를 변경하여 간접적으로 구현 변경을 허용하는 이 인터페이스를 구현합니다.

//ArrayList
Collection c = new ArrayList():
c.add(1);
c.add(2);
c.contains(1);

Collection c1 = new LinkedList():
c1.addAll(c);//Array added to a linked list

/*What if i dont want arraylist but now i want a priority queue for applying efficient algorithms such as findmax and find min*/
//Just Change Object - SIMPLE!
Collection c = new **PriorityQueue**():
c.add(1);
c.add(2);
c.contains(1);

수집 인터페이스 방법

  1. int size : 컬렉션의 크기를 반환합니다.
  2. boolean isEmpty : 컬렉션이 비어 있으면 true를 반환합니다.
  3. boolean contain(Object o) : Object o가 컬렉션에 존재하면 true를 반환합니다.
  4. Iterator iterator() : 컬렉션을 가리키는 반복자를 반환합니다.
  5. Object[] toArray() : 컬렉션을 Object 유형의 배열로 변환합니다.
  6. T[] toArray(T[] a) : 컬렉션의 모든 요소를 ​​포함하는 배열을 반환합니다. 반환된 배열의 런타임 유형은 지정된 배열의 런타임 유형입니다.
  7. boolean add(E e) : 요소 e를 컬렉션에 추가합니다. 작업이 성공하면 true를 반환합니다.
  8. boolean Remove(Object o) : 컬렉션에서 객체 o를 제거합니다. 작업이 성공하면 true를 반환합니다.
  9. boolean containAll(Collection> c) ​​: 두 컬렉션의 모든 요소가 동일하면 true를 반환합니다. 작업이 성공하면 true를 반환합니다. 10.boolean addAll(Collection c) : 두 컬렉션의 모든 요소를 ​​추가합니다. 작업이 성공하면 true를 반환합니다.
  10. boolean RemoveAll(Collection> c) ​​: 호출자 컬렉션에서 컬렉션 c의 요소를 제거합니다. 작업이 성공하면 true를 반환합니다.
  11. boolean keepAll(Collection> c) ​​: 컬렉션 c에 있는 요소만 유지합니다.
  12. voidclear() : 컬렉션의 모든 요소를 ​​지웁니다.

컬렉션 클래스를 구현하면 위의 메서드를 재정의하여 사용자 정의 컬렉션을 만들 수 있습니다. 아래는 동일한 예입니다.

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.NoSuchElementException;

public class CustomCollection implements Collection {
    private final ArrayList list = new ArrayList();

    @Override
    public int size() {
        return list.size();
    }

    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }

    @Override
    public boolean contains(Object o) {
        return list.contains(o);
    }

    @Override
    public Iterator iterator() {
        return new Iterator() {
            private int index = 0;

            @Override
            public boolean hasNext() {
                return index  T[] toArray(T[] a) {
        return list.toArray(a);
    }

    @Override
    public boolean add(E e) {
        return list.add(e);
    }

    @Override
    public boolean remove(Object o) {
        return list.remove(o);
    }

    @Override
    public boolean containsAll(Collection> c) {
        return list.containsAll(c);
    }

    @Override
    public boolean addAll(Collection extends E> c) {
        return list.addAll(c);
    }

    @Override
    public boolean removeAll(Collection> c) {
        return list.removeAll(c);
    }

    @Override
    public boolean retainAll(Collection> c) {
        return list.retainAll(c);
    }

    @Override
    public void clear() {
        list.clear();
    }
}


목록 인터페이스

Java의 목록 인터페이스는 Java 컬렉션 프레임워크의 일부이며 컬렉션 인터페이스를 확장합니다. 이는 위치 액세스, 요소 중복 및 해당 요소에 대한 반복을 허용하는 정렬된 컬렉션(시퀀스라고도 함)을 나타냅니다. List 인터페이스는 ArrayList, LinkedList, Vector 및 Stack과 같은 여러 클래스로 구현됩니다.

목록 인터페이스의 주요 특징:

  1. 순서가 지정된 컬렉션: 목록은 요소의 삽입 순서를 유지합니다. 즉, 요소는 해당 인덱스로 액세스할 수 있습니다.
  2. 중복 허용: 목록은 중복을 허용하지 않는 집합과 달리 중복 요소를 포함할 수 있습니다.
  3. 위치 액세스: 목록의 요소는 해당 색인을 통해 액세스, 추가 또는 제거될 수 있습니다.
  4. 반복: List 인터페이스는 향상된 for 루프뿐만 아니라 Iterator 또는 ListIterator를 사용한 반복도 허용합니다.

목록 인터페이스에서 일반적으로 사용되는 방법:
목록 인터페이스가 컬렉션 인터페이스를 확장하므로 모든 컬렉션 인터페이스 메서드도 목록 인터페이스에 의해 구현됩니다.

  1. void add(int index, E element): 이 목록의 지정된 인덱스에 지정된 요소 E를 삽입합니다.
  2. E get(int index): 이 목록의 지정된 위치에 있는 요소를 반환합니다.
  3. E 제거(int index): 이 목록의 지정된 위치에 있는 요소를 제거합니다.
  4. E set(int index, E element): 이 목록의 지정된 위치에 있는 요소를 지정된 요소로 대체합니다.
  5. int indexOf(Object o): 지정된 요소가 처음 나타나는 인덱스를 반환하거나 목록에 해당 요소가 없으면 -1을 반환합니다.
  6. int lastIndexOf(Object o): 지정된 요소가 마지막으로 나타나는 인덱스를 반환하거나 목록에 해당 요소가 없으면 -1을 반환합니다.
  7. List subList(int fromIndex, int toIndex): 지정된 fromIndex(포함)와 toIndex(제외) 사이에 있는 이 목록의 부분에 대한 뷰를 반환합니다.
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("Java");
        list.add("Collections");
        list.add("Framework");

        // Accessing elements by index
        System.out.println("First Element: "   list.get(0));

        // Removing an element by index
        list.remove(1);
        System.out.println("After Removal: "   list);

        // Updating an element
        list.set(1, "Updated Element");
        System.out.println("Updated List: "   list);

        // Using a sublist
        List sublist = list.subList(0, 1);
        System.out.println("Sublist: "   sublist);
    }
}

릴리스 선언문 이 글은 https://dev.to/harsh_khanpara_e78fd42c5a/java-collection-framework-4fm8?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3