quilt code
[고급자바] 컬렉션 프레임워크 (1) 본문
1. ArrayList
|
기본 용량값 : 10;
|
|
List list1 = new LinkedList<>();
|
| 1. add() : 데이터 추가 |
|
list1.add("aaa");
list1.add("bbb"); list1.add(new Integer(111)); list1.add('k'); list1.add(true); list1.add(12.34); |
| 2. size() : 데이터 개수 조회 |
|
System.out.println("size => " + list1.size());
|
|
size => 6
|
| 3. get() : 데이터 꺼내기 |
|
System.out.println("1번째 자료 : " + list1.get(0));
|
|
1번째 자료 : aaa
|
| 4. 데이터 끼워넣기도 add 사용
(인덱스 번호 넣기)
|
|
list1.add(0, "zzz");
System.out.println("list1 => " + list1); |
|
list1 => [zzz, aaa, bbb, 111, k, true, 12.34]
|
| 5. 데이터 변경하기 |
|
String temp = (String) list1.set(0, "YYY");
System.out.println("temp => " + temp); System.out.println("list => " + list1); |
|
temp => zzz
list => [YYY, aaa, bbb, 111, k, true, 12.34] |
| 6. 데이터 삭제하기 |
|
list1.remove(0);
System.out.println("삭제 후 : " + list1); list1.remove("bbb"); System.out.println("bbb 삭제 후 : " + list1); list1.remove(new Integer(111)); System.out.println("111 삭제 후 : " + list1); |
|
삭제 후 : [aaa, bbb, 111, k, true, 12.34]
bbb 삭제 후 : [aaa, 111, k, true, 12.34] 111 삭제 후 : [aaa, k, true, 12.34] |
| 7. 제너릭을 지정하여 선언 가능 |
|
List<String> list2 = new ArrayList<>();
list2.add("AAA"); list2.add("BBB"); list2.add("CCC"); list2.add("DDD"); list2.add("EEE"); for(String s : list2){ System.out.println(s); } |
|
AAA
BBB CCC DDD EEE |
| 8. contains(비교객체) : 리스트에 '비교객체'가 있으면 true, 없으면 false로 반환 |
|
System.out.println(list2.contains("DDD"));
System.out.println(list2.contains("ZZZ")); |
|
true
false |
| 9. indexOf(비교객체) : 리스트에 '비교객체'를 찾아 '비교객체'가 있는 index 값을 반환함. 없으면 -1 반환함 |
|
System.out.println("DDD의 index값 : " + list2.indexOf("DDD"));
System.out.println("ZZZ의 index값 : " + list2.indexOf("ZZZ")); |
|
DDD의 index값 : 3
ZZZ의 index값 : -1 |
| 10. ArrayList 삭제처리하기 |
|
for(int i=0; i<list2.size(); i++) {
list2.remove(i); } |
|
삭제 처리 후 arrayList 크기 : 2
|
2. StackQueue
- Stack : 후입선출(LIFO)의 자료구조
- Queue : 선입선출(FIFO)의 자료구조
- Stack과 Queue는 LinkedList를 이용하여 구현할 수 있음
| 1. Stack의 명령 1) 자료 입력 : push(저장할 값) 2) 자료 출력: pop( ) => 자료를 꺼내온 후 꺼내온 자료를 stack에서 삭제한다. |
|
stack.push("홍길동");
stack.push("일지매"); stack.push("변학도"); stack.push("강감찬"); System.out.println("현재 stack값들 : " + stack); String data = stack.pop(); System.out.println("꺼내온 자료 : " + data); System.out.println("꺼내온 자료 : " + stack.pop()); System.out.println("현재 stack값들 : " + stack); stack.push("성춘향"); System.out.println("현재 stack값들 : " + stack); System.out.println("꺼내온 자료 : " + stack.pop()); |
|
현재 stack값들 : [강감찬, 변학도, 일지매, 홍길동]
꺼내온 자료 : 강감찬 꺼내온 자료 : 변학도 현재 stack값들 : [일지매, 홍길동] 현재 stack값들 : [성춘향, 일지매, 홍길동] 꺼내온 자료 : 성춘향 |
| 2. Queue의 명령 1) 자료 입력 : offer(저장할 값) 2) 자료 출력 : poll() => 자료를 Queue에서 꺼내온 후 꺼내온 자료는 Queue에서 삭제된다. |
|
LinkedList<String> queue = new LinkedList<>();
queue.offer("홍길동"); queue.offer("일지매"); queue.offer("변학도"); queue.offer("강감찬"); System.out.println("현재 queue의 값 : " + queue); String temp = queue.poll(); System.out.println("꺼내온 자료 : " + temp); System.out.println("꺼내온 자료 : " + queue.poll()); System.out.println("현재 queue값들 : " + queue); if(queue.offer("성춘향")) { System.out.println("신규 등록 자료 : 성춘향"); } System.out.println("현재 queue의 값 : " + queue); System.out.println("꺼내온 자료 : " + queue.poll()); } |
|
현재 queue의 값 : [홍길동, 일지매, 변학도, 강감찬]
꺼내온 자료 : 홍길동 꺼내온 자료 : 일지매 현재 queue값들 : [변학도, 강감찬] 신규 등록 자료 : 성춘향 현재 queue의 값 : [변학도, 강감찬, 성춘향] 꺼내온 자료 : 변학도 |
3. ListSort
- 정렬과 관련된 Interface는 Comparable과 Comparator가 있다
- 보통 객체 자체에 정렬 기능을 넣기 위해서는 Comparable을 구현하고 정렬 기준을 별도로 구현하고 싶을 때는 Comparator를 구현하여 사용하면 된다
- Comparable에서는 compareTo()메소드를 구현해야하고 Comparator에서는 compare()메소드를 구현해야한다
|
List<String> list = new ArrayList<>();
list.add("일지매"); list.add("홍길동"); list.add("성춘향"); list.add("변학도"); list.add("이순신"); System.out.println("정렬 전 : " + list); |
|
정렬 전 : [일지매, 홍길동, 성춘향, 변학도, 이순신]
|
| 정렬은 Collections.sort() 메소드를 이용하여 정렬함 정렬은 기본적으로 '오름차순' 정렬을 수행함 정렬방식을 변경하려면 정렬방식을 결정하는 객체를 만들어서 Collecitons.sort()메소드에 인수로 넘겨주면 됨 |
|
Collections.sort(list); // 정렬하기
System.out.println("정렬 후 : " + list); Collections.shuffle(list); // 데이터 섞기 System.out.println("자료 섞기 후 : " + list); |
|
정렬 후 : [변학도, 성춘향, 이순신, 일지매, 홍길동]
자료 섞기 후 : [성춘향, 일지매, 변학도, 이순신, 홍길동] |
'daily > 고급자바' 카테고리의 다른 글
| [고급자바] 컬렉션 프레임워크(4) (0) | 2023.02.02 |
|---|---|
| [고급자바] Student 과제 (0) | 2023.02.02 |
| [고급자바] Lotto 과제 (0) | 2023.02.02 |
| [고급자바] 컬렉션 프레임워크 (3) (0) | 2023.02.01 |
| [고급자바] 컬렉션 프레임워크 (2) (0) | 2023.01.31 |