1. 컬렉션이란 ?
자료구조가 내장되어있는 자바 클래스로 자바에서 제공하는 "자료구조*를 담당하는 프레임워크*"이다.
* >자료구조란 ?
방대한 데이터들을 효율적, 구조적으로 관리(조회,정렬,추가,수정,삭제)하기위한 개념
* >프레임워크란 ?
데이터나 기능들을 보다 쉽게 사용할 수 있도록 제공하는 틀
컬렉션이란 => 방대한 데이터들을 효율적으로 관리할 수 있는 기능들이 이미 내장되어있는 클래스!
2. 배열과 컬렉션의 차이점 (배열의 단점 vs 컬렉션의 장점)
> 배열
- 크기에 대한 제약이 많음(배열생성시 크기지정 필수 , 한번 지정된 크기 변경불가)
- 중간위치에 추가하거나 삭제하는 경우 값을 뒤로 또는 앞으로 땡겨주는 작업을 코드로 구현
- 한 타입의 데이터만 저장가능
> 컬렉션
- 크기에 대한 제약이 없음 (크기지정 안해도됨, 알아서 크기 변경됨)
- 중간위치에 추가하거나 삭제하는 경우 값을 땡겨주는 알고리즘을 구현할 필요 없음
이미 메소드로 제공하고 있기때문에 메소드 호출만으로 간단하게 처리 가능
- 여러타입의 데이터 저장가능
3. 컬렉션 종류
인터페이스 분류 : Collection - List / Set 계열
┌>List계열 :✔ArrayList✔, LinkedList, Vector
| - 데이터(value)만 저장 가능
| - 순서유지하고 저장(index의 개념 있음)
| - 중복된 데이터 허용
|
└>Set계열 :HashSet, TreeSet
- 데이터(value)만 저장 가능
- 순서 유지되지 않음
- 중복된 데이터 허용 안됨
---------------------------------------------------------------
>Map계열 :HashMap,HashTable,TreeMap,Properties
- 키(key)와 데이터(value)를 함께 저장
- 순서 유지되지 않음
- value는 중복될 수 있으나 key는 중복 허용안됨
✅ List계열의 ArrayList
//ArrayList 이용 - 객체 생성과 동일하게 생성
ArrayList list = new ArrayList(3);//크기지정 할수도 있고 안할수도있음
1. add (E e) : 리스트의 끝에 전달된 데이터를 추가시켜주는 메소드
E : Element - 리스트에 담길 데이터들(요소) 로 언제든지 변할 수 있는 자료형
list.add(new Music("Good Bye","박효신"));
list.add(new Music("이 밤","양다일"));
list.add(new Music("잊혀지다","정키"));
list.add("끝");
//컬렉션장점1. 크기의 제약이 없음
//컬렉션장점3. 여러타입 보관가능
System.out.println(list);
1출력결과 )
[Music [title=Good Bye, artist=박효신], Music [title=이 밤, artist=양다일], Music [title=잊혀지다, artist=정키], 끝]
2. add(int index, E e) : 해당인덱스 위체에 데이터를 추가시켜주는 메소드
list.add(1,new Music("진심이 담긴 노래","케이시"));
//장점2. 중간위치에 데이터 추가시 복잡한 알고리즘 구현할 필요없음
System.out.println(list);
2출력결과 )
[Music [title=Good Bye, artist=박효신], Music [title=진심이 담긴 노래, artist=케이시], Music [title=이 밤, artist=양다일], Music [title=잊혀지다, artist=정키], 끝]
3. remove(int index): 해당 인덱스위치의 데이터 삭제시켜주는 메소드
list.remove(1);
System.out.println(list);
3출력결과)
[Music [title=Good Bye, artist=박효신], Music [title=이 밤, artist=양다일], Music [title=잊혀지다, artist=정키], 끝]
4. set(int index, E e): 해당 인덱스위치에 데이터를 새로 전달된 e로 변경시켜주는 메소드
list.set(0,new Music("술이 달다","에픽하이"));
System.out.println(list);
4출력결과)
[Music [title=술이 달다, artist=에픽하이], Music [title=이 밤, artist=양다일], Music [title=잊혀지다, artist=정키], 끝]
//5. size() : 리스트의 사이즈 반환시켜주는 메소드 (배열과 비교하면 length같은 느낌)
System.out.println("리스트의 사이즈 : "+ list.size());
System.out.println("리스트의 마지막 인덱스 수: "+ (list.size()-1)); //3번인덱스 까지 있음
5출력결과)
리스트의 사이즈 : 4
리스트의 마지막 인덱스 수: 3
6. get(int index) : E(반환형 Object) -> 해당 인덱스 위치의 객체를 반환시켜주는 메소드
Music m = (Music)list.get(0);
String s = (String)list.get(3);// 변수에 대입할때는 강제형변환
System.out.println(m);
System.out.println(s);
System.out.println(list.get(1)); // 바로 출력시에는 강제형변환 필요없음
System.out.println(((Music)list.get(1)).getTitle());
6출력결과)
Music [title=술이 달다, artist=에픽하이]
끝
Music [title=이 밤, artist=양다일]
이 밤
7. subList(int index1, int index2) :List(반환형 List) 기존의 리스트에서 일부 추출해서 새로운 List로 반환해주는 메소드
List sub = list.subList(0, 2); //시작인덱스 <= < 끝인덱스
System.out.println(sub);
7 출력결과)
[Music [title=술이 달다, artist=에픽하이], Music [title=이 밤, artist=양다일]]
8. addAll(Collection c) : 컬렉션을 통째로 뒤에 추가시켜주는 메소드
list.addAll(sub);
System.out.println(list);
8출력결과)
[Music [title=술이 달다, artist=에픽하이], Music [title=이 밤, artist=양다일], Music [title=잊혀지다, artist=정키], 끝, Music [title=술이 달다, artist=에픽하이], Music [title=이 밤, artist=양다일]]
9.✔ isEmpty() : boolean -> 컬렉션이 비어있는지 묻는 메소드
System.out.println(list.isEmpty()); //false
10. clear() : 싹비워주는 메소드
list.clear();
System.out.println(list);
System.out.println(list.isEmpty());//true
10출력결과)
[]
true
'JAVA' 카테고리의 다른 글
13.Collection_ Set_ HashSet (0) | 2022.11.10 |
---|---|
13. Collection_ List_ArrayList 와 Generic (0) | 2022.11.09 |
12. IO (IntputOutput) _객체 배열 입출력 (0) | 2022.11.08 |
12. IO (IntputOutput) _객체 입출력 (ObjectDao) (0) | 2022.11.08 |
12. IO (IntputOutput)_ Stream _ 보조스트림 (0) | 2022.11.08 |