컬렉션 프레임 워크란?
- 프로그램 구현에 필요한 자료구조와 알고리즘을 구현해 놓은 라이브러리이다.
- java.util 패키지에 구현되어 있다.
- 개발에 소요된느 시간을 절약하고 최적화된 라이브러리를 사용할 수 있다.
- Collection 인터페이스와 Map 인터페이스로 구성됨.
Collection 인터페이스
하나의 객체 관리를 위해 선언된 인터페이스로 필요한 기본 메서드가 선언되어 있다. 하위에 List, Set 인터페이스가 있다.
Map 인터페이스
- 쌍으로 이루어진 객체를 관리하는데 필요한 여러 메서드가 선언되어 있다.
- Map을 사용하는 객체는 Key-Value 쌍으로 되어 있고, Key는 중복될 수없다.
List 인터페이스
- Collection 하위 인터페이스이다.
- 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스.
- 배열의 기능을 구현하기 위한 메서드가 선언됨.
- ArrayList, LinkedList, Vector
ArrayList 와 LinkedList
둘 다 자료의 순차적 구조를 구현한 클래스이다.
ArrayList는 배열을 구현한 클래스로 논리적 순서와 물리적 순서가 동일하다.
LinkedList는 논리적으로 순차적인 구조지만, 물리적으로는 순차적이지 않을 수 있다.
LinkedList의 자료 추가와 삭제
import java.util.LinkedList;
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> myList = new LinkedList<String>();
myList.add("A");
myList.add("B");
System.out.println(myList);
// [A, B]
myList.add(1, "C");
System.out.println(myList);
// [A, C, B]
myList.removeLast();
System.out.println(myList);
// [A, C]
}
}
Stack 구현
- Last In First Out(LIFO): 맨 마지막에 추가 된 요소가 가장 먼저 꺼내짐
- 이미 구현된 클래스가 제공
- ArrayList나 LinkedList로 구현할 수 있다.
ArrayList로 직접구현 하는 경우
import java.util.ArrayList;
class MyStack{
private ArrayList<String> arrayStack = new ArrayList<String>();
public void push(String data){
arrayStack.add(data);
}
public String pop(){
int len = arrayStack.size();
if(len == 0){
System.out.println("스택이 비어있습니다.");
return null;
}
return arrayStack.remove(len-1);
}
}
public class StackTest {
public static void main(String[] args) {
MyStack stack = new MyStack();
stack.push("A");
stack.push("B");
stack.push("C");
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
java.util.Stack에 이미 구현되어 있는 스택라이브러리를 사용하면 된다.
Queue
- First In First Out(FIFO): 먼저 저장된 자료가 먼저 꺼내짐.
- 스택과 마찬가지로 java.util.Queue에 구현되어 있는 라이브러리를 사용하면 된다.
- 큐는 LinkedList를 활용하여 생성한다.
- Queue와 LinkedList가 다 import되어 있어야함.
예외가 발생하는 경우 예외를 리턴함 | 성공 실패의 T/F를 리턴함 | |
삽입 | add(e) | offer(e) |
삭제 | remove() | poll() |
검사 | element() | peek() |
import java.util.LinkedList;
import java.util.Queue;
public class QueueTest {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
queue.offer("A"); // queue에 A추가
queue.offer("B"); // queue에 B추가
queue.offer("C"); // queue에 C추가
System.out.println(queue);
queue.poll(); //queue의 첫번째 값을 반환하고 제거
System.out.println(queue);
queue.remove(); //queue의 첫번째 값을 제거
System.out.println(queue);
queue.peek(); // queue 검사
System.out.println(queue);
queue.clear(); // queue 초기화
System.out.println(queue);
}
}
// 결과
//[A, B, C]
//[B, C]
//[C]
//[C]
//[]
'공부 > 자바 (Java)' 카테고리의 다른 글
[Java] 제네릭 프로그래밍 (0) | 2022.01.06 |
---|---|
[Java] String 클래스, StringBuilder와 StringBuffer, Wrapper 클래스 (0) | 2022.01.05 |
[Java] JPA, MySQL연동 (Entity), JPA를 통한 CRUD (0) | 2021.12.31 |
[Java] Lombok(롬복)이란? Lombok설치 (0) | 2021.12.30 |
[Java] Object 클래스 & Class 클래스 - toString(), equals(), hashCode(), clone(), forName() (0) | 2021.12.29 |
댓글