유수봉 교수의 자바프로그램 12주차 컬렉션, 제네릭, 타입 매개변수, 외 다양한 예제

컬렉션(Collection)이란?

  • 자바에서 컬렉션이란 고정 크기가 정해져 있는 배열의 단점을 극복하고, 요소라고 불리는 객체들의 삽입과 삭제, 검색 기능을 갖춘 가변적인 크기의 컨테이너이며 이러한 컬렉션은 제너릭이라는 기법으로 구현된다.
    이러한 컬렉션을 사용하는 이유는 위에서도 말했듯이 고정 크기의 배열을 다루면서 오는 어려움을 해결해주며 다양한 객체들의 삽입이나 삭제, 검색 등의 관리가 용이하기 때문이다.

제네릭이란?

  • 자바에서 제네릭이란 특정 타입만 다루지 않고, 여러 종류의 타입으로 변신할 수 있도록 클래스나 메소드를 일반화된 타입 매개 변수로 작성하는 기법을 말하며 이를 사용하는 이유는 클래스나 메소드를 일반화된 타입 매개 변수로 작성하여 여러 종류의 타입을 다룰 수 있게 하거나 위에서 말한 것처럼 컬렉션을 사용하기 위해서 사용한다.

타입 매개변수란?

  • 타입 매개변수란 실행 시 인자로 전달하는 타입을 변수의 타입으로 지정하는 것이며 타입 매개변수는 클래스, 인터페이스, 메서드에서 사용할 수 있으며 이를 사용하는 이유는 컴파일할 때 타입을 체크해서 에러를 사전에 잡을 수 있기 때문이다.
// 정수만 다루는 Vector <Integer> 컬렉션 활용

import java.util.Vector;

public class main {

    public static void main(String[] args) {

        Vector<Integer> v = new Vector<Integer>(); // 정수 값만 다루는 벡터 생성

        v.add(5); // 5삽입
        v.add(4); // 4삽입
        v.add(-1); // -1삽입

        // 벡터 중간에 삽입하기 
        v.add(2, 100); // 4와 -1사이에 정수 100 삽입

        System.out.println("벡터 내의 요소 객체 수 : " + v.size()); // 크기 3
        System.out.println("벡터의 현재 용량 : " + v.capacity()); // 벡터 용량 10

        // 모든 요소 정수 출력하기 
        for(int i = 0; i < v.size(); i++) {

            int n = v.get(i); // 벡터의 i 번째 정수
            
            System.out.println(n);

        }

        // 벡터 내의 모든 정수 더하기
        int sum = 0;

        for(int i = 0; i < v.size(); i++) {

            int n = v.elementAt(i); // 벡터의 i 번째 정수

            sum += n;

        }

        System.out.println("벡터에 있는 정수 합 : " + sum);

    }

}
  • 실행 결과

// Point 클래스만 다루는 Vector<Point> 컬렉션 활용

import java.util.Vector;

class Point {

    private int x, y;

    public Point(int x, int y) {

        this.x = x; this.y = y;

    }

    public String toString() {

        return "(" + x + "," + y + ")";

    }

}
public class main {

    public static void main(String[] args) {

        Vector<Point> v = new Vector<Point>(); // Point 객체를 요소로 다루는 벡터 생성

        // 3개의 Point 객체 삽입

        v.add(new Point(2, 3));
        v.add(new Point(-5, 20));
        v.add(new Point(30, -8));

        v.remove(1); // 인덱스 1의 Point(-5, 20) 객체 삭제

        // 벡터에 있는 Point 객체 모두 검색하여 출력

        for (int i = 0; i < v.size(); i++) {

            Point p = v.get(i); // 벡터의 i번째 Point 객체 얻어내기

            System.out.println(p); // p.toString()을 이용하여 객체 p출력

        }

    }

}
  • 실행 결과

좋은 웹페이지 즐겨찾기