본문 바로가기
Coding/Java

Java - 컬렉션 리스트 ( List, ArrayList, Vector, ...)

by ZaRi 2023. 7. 14.

 

 자바의 java.utill 패키지는 컬렉션 클래스를 제공합니다. 컬렉션은 제네릭을 사용하고 자료형을 가변크기로 다룰 수 있게 해 줍니다. 마치 파이썬의 리스트 같다고 생각하면 편할 것입니다. 대신 파이썬과 다른 점은 오직 한 타입의 자료만 다를 수 있다는 점이 다릅니다. 그 컬렉션 중에 리스트에 대해 오늘 알아보겠습니다.

 


List 선언방법

선언 방법 ex)
사용할리스트<클래스타입> 리스트명 = new 사용할리스트<클래스타입>(); 예시1)
ArrayList<Integer> list = new ArrayList<Integer>();

예시2)
Vector<String> list = new Vector<String>();

 

 

위 방법대로 선언 하면됩니다. 다만 한가지 주의할 점은 <> 제네릭에는 자료형이 기본타입(ex. int, double, char)이 들어가면 안 되며, 꼭 복합타입(클래스타입)이 들어가야 합니다.

 

 

 

List 메소드

 

메소드 설명
add(a) 맨 뒤에 a 추가
get(index) index 위치에 있는 값 불러옴
remove(index) index 위치에 있는 값 삭제
clear() 리스트 내에 모든 값 삭제
size() 리스트 길이 반환

 

 기본적인 메소드는 위와 같이 있습니다. 활용하기 칸에서 하나하나 활용해 보도록 하겠습니다.

 

 

 

활용하기

배열 선언

import java.util.*;

public class Search {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
    }
}

 

 배열은 먼저 선언하고 위에 메소드들을 하나씩 실행하는 코드를 만들어보겠습니다.

 

 

import java.util.*;

public class Search {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();

        list.add(3);    // 기본타입이 들어가면 자동으로 그에 대응하는 Wrapper 클래스로 변환되어 추가됨.
        list.add(new Integer(500));
        list.add(Integer.parseInt("165"));

        for(int i = 0; i < list.size(); i++) {
            System.out.println(i+"의 값: " + list.get(i));
        }
    }
}

 

값을 하나씩 추가하고 반복문을 통하여 값을 하나하나 출력하는 코드를 만들었습니다.

그럼 실행 결과를 봐보겠습니다.

 

 

 

list의-값들이-하나씩-출력됨.
활용1

 

하나씩 출력되는 모습입니다. 그러면 이번엔 clear()와 remove()를 사용해 보겠습니다.

 

 

 

 

import java.util.*;

public class Search {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();

        list.add(3);    // 기본타입이 들어가면 자동으로 그에 대응하는 Wrapper 클래스로 변환되어 추가됨.
        list.add(new Integer(500));
        list.add(Integer.parseInt("165"));

        list.remove(1);
        System.out.println("remove() 메소드 사용 후");
        for(int i = 0; i < list.size(); i++) {
            System.out.println(i+"의 값: " + list.get(i));
        }

        list.clear();
        System.out.println("clear() 메소드 사용 후");
        for(int i = 0; i < list.size(); i++) {
            System.out.println(i+"의 값: " + list.get(i));
        }
    }
}

 

remove() 메소드와 clear() 메소드를 사용했을때 각각 어떻게 출력되는 지 확인하는 코드를 만들었습니다.

그럼 이제 출력해 보겠습니다.

 

 

remove()를-실행했을때-결과와-clear()를-실행했을때-결과가-출력됨.
활용2

 

 출력 결과를 보게 되면 remove(1); 이 인덱스 1에 있던 값을 삭제한 모습을 볼 수 있습니다. 또한 clear() 메소드를 사용함으로써 모든 값이 사라진 것을 확인할 수 있습니다.

 리스트에 있는 값을 출력할 때 iterator()를 사용하기도 합니다. 그것도 마저 다뤄보겠습니다.

 

 

 

Iterator

선언 방법 주의
Iterator<클래스타입> 이름 = 리스트명.iterator(); 클래스 타입은 기존 리스트의 클래스 타입과 동일해야합니다.

 선언은 위와 같이 하면 되고, 관련 메소드들을 보여드리겠습니다.

 

 

메소드 설명
hasNext()  다음값이 있는지 확인
next() 다음으로 넘어가서 값을 반환함.

 

 메소드 설명은 여기까지 보고 활용하면서 봐보겠습니다.

 

 

Iterator 활용하기

import java.util.*;

public class Search {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();

        list.add(3);    // 기본타입이 들어가면 자동으로 그에 대응하는 Wrapper 클래스로 변환되어 추가됨.
        list.add(new Integer(500));
        list.add(Integer.parseInt("165"));

        Iterator<Integer> it = list.iterator();

        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

 

위의 코드를 가져와서 이번에는 Iterator를 활용해서 값을 출력하도록 만들었습니다.

while의 조건에 hasNext() 메소드를 사용해서 값이 참이면 계속 실행되게 만들었습니다.

그럼 출력 결과를 봐보겠습니다.

 

 

 

3&#44;500&#44;165가-출력된-모습
Iterator활용

 

이렇게 값을 순서대로 가져올 수 있습니다.

 

 


 오늘은 자바의 컬렉션 중 list와 관련된 컬렉션을 정리해 보았습니다. 다음에는 파이썬의 딕셔너리와 비슷한 HashMap<>을 다뤄보겠습니다.

댓글