코딩하는 몽구리

제네릭과 컬렉션 본문

Java

제네릭과 컬렉션

코딩구리 2024. 1. 26. 17:34

컬렉션의 개념

컬렉션(collection)은 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너이다. 

컬렉션 인터페이스와 클래스

컬렉션 클래스는 개발자가 바로 사용할 수 있는 것들로서, Vector<E>와 ArrayList<E>는 가변 크기의 배열을 구현합니다. 

 

제네릭의 기본 개념

제네릭(generic)은 모는 종류의 타입을 다룰 수 있도록, 클래스나 메소드를 타입 매개변수를 이용하여 선언하는 기법

 

제네릭 컬렉션 활용 

Vector<E>

- vector<E>는 배열을 가변 크기롤 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스이다. 

 

정수만 다루는 벡터를 생성하고 , 활용하는 기본 사례

import java.util.Vector;

public class VectorEx {
    public static void main(String[] args) {
        Vector<Integer> v = new Vector<Integer>(); // 정수 값만 다루는 벡터 생성
        v.add(5);
        v.add(4);
        v.add(-1);

        // 벡터 중간에 삽입하기
        v.add(2, 100);

        System.out.println("벡터 내의 요소 개수 : " + v.size());
        System.out.println("벡터의 현재용량: " + v.capacity());

        // 모든 요소 출력하기
        for(int i=0;i<v.size();i++){
            System.out.println(v.get(i));
        }

        // 벡터 속의 모든 정수 더하기
        int sum = 0;
        for(int i=0;i<v.size();i++){
            int n=v.elementAt(i);
            sum += n;
        }
        System.out.println("벡터에 있는 정수 합: " + sum);
    }
}

-- 실행결과--

벡터 내의 요소 개수 : 4
벡터의 현재용량: 10
5
4
100
-1
벡터에 있는 정수 합: 108

ArrayList<E>

ArrayList는 스레드 간에 동기화를 지원하지 않기 때문에, 다수의 스레드가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 ArrayList의 데이터가 훼손될 우려가 있다. 하지만 멀티스레드 동기화를 위한 시간 소모가 없기 때문에, ArrayList는 Vector보다 속도가 빨라, 단일 스레드 응용에는 더 효과적이다. 

ArrayList의 생성 

ArrayList<String> a = new ArrayList<String>();

// Java 10부터 가능
var a = new ArrayList<String>();

 

'Java' 카테고리의 다른 글

캡슐화  (0) 2024.03.24
접근제어자  (0) 2024.03.24
접근제어자  (0) 2024.01.01
[Java] 추상클래스  (0) 2024.01.01
상속  (0) 2023.12.11