(Java programming) Generic / Collection

soosoorim·2024년 2월 20일
0

제네릭 Generic

  • 제네릭을 사용하면, 매우 유연한 자료구조를 만들어낼 수 있다.

기존 배열 예시

public static void main(String[] args) {
    int[] scoreArray = new int[1];
    scoreArray[0] = 100;
}

// 만약, 값을 하나 더 추가하려면 아래와 같은 코드가 필요하다.

int[] scoreArray2 = new int[scoreArray.length + 1];
    // 배열 복사
    System.arraycopy(scoreArray, 0, scoreArray2, 0, scoreArray.length);
    scoreArray2[1] = 95;
    
for(int n: scoreArray) {
        System.out.println("scoreArray: " + n);
    }
    
    for(int n: scoreArray2) {
        System.out.println("scoreArray2: " + n);
    }
}

이런 방식 말고 사용할 타입을 나중에 정하도록 하는 제네릭을 사용하면 훨씬 더 편리해진다.
제네릭은 클래스명 옆에 부등호( < > )를 이용해 정의

// 제네릭을 적용한 ScoreList

public class ScoreList<T> {
    private Object[] scoreArray;
    private int size;
    public ScoreList() {
        scoreArray = new Object[2];
    }
    /**
     * scoreArray 배열에 값을 추가
     * @param score
     */
    public void add(T score) {
        if ( size >= scoreArray.length ) {
            Object[] tempScoreArray = new Object[scoreArray.length + 2];
            … 생략 …
        }
        … 생략 …
    }
    /**
     * scoreArray 배열에서 index의 값을 반환
     * @param index
     * @return
     */
    public T get(int index) {
        if (index >= size) {
            throw new IndexOutOfBoundsException(index);
        }
        return (T) scoreArray[index];
    }

	… 생략 …}
  • <T> : 제네릭은 보통 한 글자 단위로 작성한다.
public class ScoreList<T>

0개의 댓글

관련 채용 정보