1. List 인터페이스
# '순차 처리'를 위한 컬렉션이지만 멤버 객체는 중복될 수 있다.
1) List 인터페이스 클래스
2) List 인터페이스 메소드
3) ArrayList 객체 생성하는 방법
# ArrayList 연습하기 (1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package collectionex; import java.util.ArrayList; public class CollectionTest01 { public static void main(String[] args) { // list.add(): 매개타입이 Object이기 때문에 모든 타입이 들어올 수 있다. // 때문에 제네릭을 통해 타입을 지정해주는 것이다. ArrayList<Integer> list = new ArrayList<Integer>(); list.add(100); list.add(200); System.out.println(list); System.out.println("list.get(0): " + list.get(0)); System.out.println("list.get(1): " + list.get(1)); list.remove(0); System.out.println(list); } } # 실행 결과 [100, 200] list.get(0): 100 list.get(1): 200 [200] |
# ArrayList 연습하기 (2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | package collectionex; import java.util.ArrayList; public class CollectionTest05 { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); for(int i=1; i<7; i++) { list.add(i*10); } System.out.println(list); // 1. 30 > 300으로 변경 int idx = 0; if(list.contains(30)) { idx = list.indexOf(30); list.set(idx, 300); System.out.println("300으로 변경: " + list); }else { System.out.println("요소에 30은 없습니다."); } // 2. 20 뒤에 25를 추가 if(list.contains(20)) { idx = list.indexOf(20); list.add(idx+1, 25); System.out.println("25를 추가: " + list); }else { System.out.println("요소에 20은 없습니다."); } // 3-1. 30 이상인 요소를 모두 제거 list.remove(new Integer(60)); System.out.println(list); // 3-2. 순차적으로 지우게 되면 순서가 있기 때문에 다음 요소를 가져오지 못한다. /* for(int i=0; i<list.size(); i++) { if(list.get(i) >= 30) { list.remove(i); } } */ // 3-2과 같은 문제는 마지막부터 삭제하면 해결할 수 있다. for(int i=list.size()-1; i>=0; i--) { if(list.get(i) >= 30) { list.remove(i); } } System.out.println("30이상 제거: " + list); } } # 실행 결과 [10, 20, 30, 40, 50, 60] 300으로 변경: [10, 20, 300, 40, 50, 60] 25를 추가: [10, 20, 25, 300, 40, 50, 60] [10, 20, 25, 300, 40, 50] 30이상 제거: [10, 20, 25] | cs |
# 설명
Line 16: list에 요소 30이 있으면 이하 코드 실행
Line 17: 요소 30의 인덱스값을 가져와 idx에 저장한다.
Line 18: idx을 인덱스값으로 지정하고 300을 저장한다.
Line 34~45: remove() 메소드의 매개변수 타입으로는 Object o와 int index로 각각 받을 수 있다.
이때 remove(60);을 하게 되면 int index 타입으로 받아와 처리하여 범위 오류를 발생시킨다.
때문에 요소 60을 삭제하고자 한다면 new Integer(60);과 같이 작성하면 해결할 수 있다.
Line 39~43: 30 이상인 요소들을 list의 앞에서부터 순차적으로 지우게 되면 순서가 있기 때문에 다음 요소를 가져오지 못한다.
Line 47~51: 위와 같은 문제는 list의 마지막부터 삭제하면 해결할 수 있다.
# ArrayList 연습하기 (3)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | package collectionex; import java.util.ArrayList; import java.util.List; import java.util.Random; public class CollectionEx01 { private final int MAX_INT = 9; private Random random = new Random(); private ArrayList<Integer> arrayList = new ArrayList<Integer>(); public void testArrayList() { // arrayList 초기값 설정 for(int i=0; i<MAX_INT; i++) { arrayList.add(random.nextInt(MAX_INT)); } this.printMemeber(arrayList); arrayList.remove(2); this.printMemeber(arrayList); arrayList.add(8); this.printMemeber(arrayList); arrayList.clear(); this.printMemeber(arrayList); } public void printMemeber(List<Integer> list) { int totalSize = list.size(); if(list instanceof ArrayList) { System.out.print("ArrayList Member (" + totalSize + ") :"); } // 강화된 for문을 이용하여 멤버 객체 확인 for(Integer item : list) { System.out.print("[" + item + "]"); } System.out.println(); } public static void main(String[] args) { CollectionEx01 col = new CollectionEx01(); col.testArrayList(); } } # 실행 결과 ArrayList Member (9) :[0][0][2][6][1][0][2][0][1] ArrayList Member (8) :[0][0][6][1][0][2][0][1] ArrayList Member (9) :[0][0][6][1][0][2][0][1][8] ArrayList Member (0) : | cs |
# 설명
Line 16~18: arrayList의 초기값을 랜덤으로 지정해준다. (중복 가능)
- 결과를 보았을때 arrayList는 중복된 데이터를 저장할 수 있고, 순차적으로 저장/출력이 됨을 알 수 있다.
'JAVA > JAVA2' 카테고리의 다른 글
JAVA2_day14 | 컬렉션 (Collection) (1) (0) | 2018.01.31 |
---|---|
JAVA2_day14 | Generic (제네릭 기법) (0) | 2018.01.31 |
JAVA2_day13 | GUI 연습문제 (2) (0) | 2018.01.30 |
JAVA2_day13 | GUI (PopupMenu, MenuItem) (0) | 2018.01.30 |
JAVA2_day12 | 내부 클래스 (Inner class) (0) | 2018.01.30 |