빠르고 얉게 훑는거라서 깊게 공부하려면 나중에 알아서 파고 들어야한다.
이런게 있다고 정리하여 알아두는 수준이다.
참조형 변수만 저장함으로써 여러 기능 제공.
배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 잇는 기능을 많이 가짐
자주 쓰는 참조형 변수 몇가지
- int 의 참조형 변수 = Integer
- long = Long
- double = Double
- String
컬렉션 종류
- List
순서가 있는 데이터의 집합(데이터 중복 허용) 배열과 비슷함
- Queue
FIFO :First In First Out
먼저 들어간 순서대로 값을 조회
- Set
순서가 없는 데이터의 집합(중복 허용 안함) 순서가 없고 중복없는 배열
- Map
순서가 없는(key,Value) 쌍으로 이루어진 데이터의 집합(Key 값 중복 허용 안함)
List
사용 메서드들
- add() :값 추가
- set() : set(인덱스 번호, 값) 해당 인덱스 값 수정
- remove() : remove(인덱스 번호) 해당 인덱스 값 삭제. 자동으로 후순위 인덱스가 앞으로 당겨짐
- clear() : List의 데이터 전부 삭제
- toString() : 대괄호 [ ] 사이에 값을 나열해 보기 편하게 해줌.
ArrayList
순서가 있는 데이터의 집합 Array(최초 길이를 알아야 함)와 비슷함
처음에 길이를 몰라도 만들 수 있음
Array -> 정적배열
List(ArrayList) -> 동적 배열(크기가 가변적으로 늘어남)
생성 시점에 작은 연속된 공간을 요청해서 참조형 변수들을 담아놓음
값이 추가될 때 더 큰 공간이 필요하면 더 큰 공간을 받아서 저장하니 상관 없음
package week2.collection;
import java.util.ArrayList;
public class Col1 {
public static void main(String[] args) {
ArrayList<Integer> intList = new ArrayList<Integer>();
intList.add(99);
intList.add(15);
intList.add(3);
System.out.println(intList.get(1));
// 2번째 있는 값 수정
intList.set(1, 10);
System.out.println(intList.get(1));
System.out.println("================");
// 삭제
System.out.println("삭제하기 전 첫번째 값 : " + intList.get(0));
intList.remove(0);
System.out.println("삭제 후 첫번째 값 출력 :" + intList.get(0));
intList.clear(); //전체 삭제
System.out.println("전체 삭제 후 출력");
System.out.println(intList.toString());
}
}

LinkedList
메모리에 남는 공간을 요청하여 여기 저기 나누어서 실제 값을 담아 넣음
실제 값이 있는 주소값으로 목록을 구성하고 저장하는 자료구조
기본적 기능은 ArrayList와 동일
LinkedList는 값을 나누어 담기 때문에 조회 속도가 느리다.
값을 삭제하거나, 추가할 때는 빠르다.
package week2.collection;
import java.util.LinkedList;
public class Col2 {
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(5);
linkedList.add(10);
linkedList.add(3);
System.out.println(linkedList.get(0));
System.out.println(linkedList.get(1));
System.out.println(linkedList.get(2));
System.out.println(linkedList.toString());
}
}

Stack
FILO : First In Last Out 선입후출 형식으로 데이터가 저장됨.
먼저 들어간 데이터가 나중에 나옴.
최근 저장된 데이터를 나열하고 싶을 때 혹은 데이터의 중복처리 방지할 때 유용함.
사용 메서드들
- push() : 값을 저장
- pop() : 최근 데이터 부터 하나씩 제거함과 동시에 해당 값을 리턴한다.
- peek() : 최근 데이터 하나 반환하며 스택에는 변화를 주지 않는다.
- isEmpty() : 스택이 비어있는지 확인 참이면 true 거짓이면 false 반환
- search() : 스택에서 검색하여 해당 위치를 반환.(위치란 인덱스 순서가 아닌 빠져나오는 순서이다.) 찾는 값이 없을 경우 -1을 반환
package week2.collection;
import java.util.Stack;
public class Col3 {
public static void main(String[] args) {
Stack<Integer> intStack = new Stack<>();
intStack.push(10);
intStack.push(15);
intStack.push(1);
// 다 지워질 때 까지 출력
while(!intStack.isEmpty()) {
System.out.println(intStack.pop());
}
// 다시 추가
intStack.push(10);
intStack.push(15);
intStack.push(1);
// peek
System.out.println("peek 출력 =========");
System.out.println(intStack.peek());
System.out.println(intStack.size());
//search
System.out.println("search 출력===========");
System.out.println(intStack.search(15));
}
}

Queue
FIFO : First in First out
선입선출
먼저 들어간 데이터가 먼저 나옴
생성자가 없는 인터페이스
생성자가 없기 때문에 new Queue; 로 생성할 수 없음
사용한 메서드들
- poll() : 큐의 첫번째 요소를 제거하고 리턴
- peek() : 큐의 첫번째 요소를 리턴하지만 큐에는 변화를 주지 않음
- size() : 큐의 길이(크기) 리턴.
package week2.collection;
import java.util.LinkedList;
import java.util.Queue;
public class Col4 {
public static void main(String[] args) {
//생성자가 없기 때문에 new LinkedList로 생성함
Queue<Integer> intQ = new LinkedList<Integer>();
intQ.add(1);
intQ.add(5);
intQ.add(9);
//poll
while(!intQ.isEmpty()) {
System.out.println(intQ.poll());
}
//추가
intQ.add(1);
intQ.add(5);
intQ.add(9);
//peek
System.out.println("====peek 출력====");
System.out.println(intQ.peek());
System.out.println("====== intQ 크기 출력 =====");
System.out.println(intQ.size());
}
}

Set
순서가 없고, 중복이 없다.
그냥 사용 가능하나 HashSet, TreeSet 등으로 응용해서 같이 사용 가능
생성자가 없는 껍데기라서 바로 생성할 수 없다.
사용한 메서드들
- contatins() : 셋 안의 데이터와 비교하여 포함하면 true 아니면 false 리턴
package week2.collection;
import java.util.HashSet;
import java.util.Set;
public class Col5 {
public static void main(String[] args) {
//생성자가 존재하는 HashSet을 이용하여 생성
Set<Integer> intSet = new HashSet<Integer>();
intSet.add(1);
intSet.add(12);
intSet.add(5);
intSet.add(9);
intSet.add(1);
intSet.add(12);
for (int i = 0; i < intSet.size(); i++) {
System.out.println(intSet);
}
//contains
System.out.println("====포함하는 값 출력====");
System.out.println(intSet.contains(2));
System.out.println(intSet.contains(5));
}
}

중복된 값을 허용하지 않아 1과 12를 두번 추가 했지만 한번만 출력되는 걸 볼 수 있다.
Map
key 와 value 구성되는 자료 구조
key 값이 유니크해야된다.
Map도 생성자가 없는 인터페이스이다.
사용한 메서드들
put() : 키 값과 밸류 값을 지정하여 맵에 추가한다. 이미 존재하는 키일 경우 기존 밸류값을 새 값으로 대체 한다
keySet() : 맵에 있는 모든 키의 값을 리턴한다. 중복된 키는 한번만 리턴됨.
values() : 맵에 있는 모든 밸류 값을 리턴한다. 키 값이 중복될 경우 최근 추가한 밸류 값만 리턴된다.
get() : 지정된 키에 대한 밸류 값을 리턴한다.
entrySet(): 맵에 있는 모든 키-값 쌍을 포함하여 리턴한다.
package week2.collection;
import java.util.HashMap;
import java.util.Map;
public class Col6 {
public static void main(String[] args) {
Map<String, Integer> intMap = new HashMap<>();
// 키 값
intMap.put("일", 11);
intMap.put("이", 12);
intMap.put("삼", 13);
intMap.put("삼", 14);
intMap.put("삼", 15);
// 키 값 출력
System.out.println("===== 키 값 출력 =========");
for (String key : intMap.keySet()) {
System.out.println(key);
}
// 밸류 값 출력
System.out.println("==== 밸류 값 출력 =========");
for(Integer value : intMap.values()){
System.out.println(value);
}
// 키 값으로 밸류 출력
System.out.println("========키 값으로 밸류 출력======");
System.out.println(intMap.get("이"));
// 키- 밸류 값 출력
System.out.println("========= 키 - 밸류 값 출력========");
System.out.println(intMap.entrySet());
}
}

'JAVA' 카테고리의 다른 글
| String 클래스의 메소드들 (1) | 2025.01.07 |
|---|---|
| 캡슐화, 상속, 다형성, 추상화 / 기본형, 참조형 매개변수 초간단 정리 (1) | 2025.01.02 |
| 인터페이스 (0) | 2024.12.26 |
| final (2) | 2024.12.26 |
| 템플릿 메서드 응용하기 (0) | 2024.12.24 |