컬렉션이란? 자료구조 개념이 내장되어 있는 클래스로
자바에서 제공하는 "자료구조"를 담당하는 "프레임워크"이다
컬렉션 장점
- 크기 지정해줄 필요 없음, 만일 지정했다고 하더라도 더 많은 데이터들이 들어오면 알아서 사이즈 늘려줌 크기의 제약이 없음
- 중간에 값을 추가한다거나 삭제하는 경우, 값을 땡겨주는 작업(알고리즘)을 직접 기술할 필요가 없음 단지 메소드 호출만으로 내부적으로 진행됨
- 한 공간에 여러 타입의 데이터들 저장 가능
ArrayList list = new ArrayList(3);
- ArrayList는 크기 지정 할 수도 안 할 수도 있음(안하면 기본 크기 10)
- 현재 list에는 아무 것도 없다
1. add(E e) : 리스트 공간 끝에 전달될 데이터 추가시켜주는 메소드
list.add(new Music("Attention", "뉴진스"));
list.add(new Music("쌔삥", "지아코"));
list.add(new Music("죽일놈", "다이나믹 듀오"));
list.add("가보자고");
- 지정된 크기보다 더 많이 넣어도 오류가 안남 => 장점 1: 크기의 제약이 없음
- 다양한 타입의 데이터 담을 수 있음 => 장점 3: 여러타입보관 가능
2. add(int index, E e)
list.add(1, new Music("진심이 담긴 노래", "케이시"));
- 직접 인덱스를 저장해서 해당 인덱스 위치에 데이터를 추가시켜주는 메소드
- list 특징 : 순서 유지하면서 담김(0번 인덱스부터 차곡차곡)
3. remove(int index) : 해당 인덱스 위치의 데이터 삭제 시켜주는 메소드
list.remove(1);
4. set(int index, E e) : 해당 인덱스 위치의 데이터를 E로 수정시키는 메소드
list.set(0, new Music("next level", "에스파"));
5. size() : 해당 리스트의 사이즈를 반환 시켜주는 메소드
System.out.println("리스트의 사이즈 : " + list.size());
- 몇 개의 데이터가 담겨 있는지 알려준다
6. get(int index) : 해당 인덱스 위치의 객체를 반환 시켜주는 메소드
Music m = (Music) list.get(0);
System.out.println(m);
String s = (String) list.get(3);
System.out.println(s);
System.out.println(list.get(1)); // list.get(1) 자체는 Object 타입
System.out.println(((Music) list.get(1)).getTitle());
// Object 타입이기 때문에 강제 형변환 해줘야한다
7. subList(int index1, int index2)
List sub = list.subList(0, 2);
// list가 List 타입이므로 List 로 받아야함
// 0번 인덱스부터 1번 인덱스 까지만 sub에 담는다
8. addAll(Collection c) // 컬렉션을 통째로 뒤에 추가시켜주는 메소드
list.addAll(sub);
// list에 sub에 있는 모든 요소를 입력
9. isEmpty() : boolean => 컬렉션이 비어있는지 묻는 메소드
System.out.println(list.isEmpty());
10. clear() : 리스트 안에 있는 내용을 싹 비워주는 메소드
list.clear();
반복문을 통해 순차적으로 list 출력
1) 단순한 for문
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
2) 향상된 for문
for(Object o : list) { // 가보자고가 있어서 Music이 아니고 모든 걸 담아둘 수 있는 Object
System.out.println(o);
}
ArrayList list = new ArrayList(); = Music 객체고 뭐고 다 들어감
ArrayList<Music> list = new ArrayList<Music>(); = 오직 Music 객체만 들어감; 제네릭 설정한다고 말함
제네릭<> 사용하는 이유
- 명시된 타입의 객체만 저장하도록 제한을 둘 수 있음
- 컬렉션에 저장된 객체를 꺼내서 사용할 때 매번 형변환 하는 절차를 없애기 위해
'Java' 카테고리의 다른 글
자바 컬렉션 - Map (0) | 2022.11.23 |
---|---|
자바 컬렉션 - set (0) | 2022.11.22 |
자바 컬렉션 : ArrayList 제네릭 (0) | 2022.11.20 |
자바 컬렉션 : ArrayList (0) | 2022.11.20 |
자바 예외 - UncheckedException (0) | 2022.11.18 |