자바의 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));
}
}
}
값을 하나씩 추가하고 반복문을 통하여 값을 하나하나 출력하는 코드를 만들었습니다.
그럼 실행 결과를 봐보겠습니다.
하나씩 출력되는 모습입니다. 그러면 이번엔 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(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() 메소드를 사용해서 값이 참이면 계속 실행되게 만들었습니다.
그럼 출력 결과를 봐보겠습니다.
이렇게 값을 순서대로 가져올 수 있습니다.
오늘은 자바의 컬렉션 중 list와 관련된 컬렉션을 정리해 보았습니다. 다음에는 파이썬의 딕셔너리와 비슷한 HashMap<>을 다뤄보겠습니다.
댓글