스택, 큐, 덱 자료구조 스택 (Stack) 가장 먼저 저장된 데이터가 가장 마지막에 빠져나오는 자료구조이다. LIFO (last-in-first-out) : 먼저 저장된 데이터가 마지막에 빠져나간다. 큐 (Queue) 가장 먼저 저장된 데이터가 가장 먼저 빠져나오는 자료구조이다. FIFO (first-in-first-out) : 먼저 저장된 데이터가 먼저 빠져나간다. 덱 (Deque) 양쪽 끝에서 넣고 빼는 것이 가능한 자료구조이다. 덱은 스택처럼 사용하는 것이 가능하며, 뿐만 아니라 큐처럼 사용할 수도 있다. public interface Deque extends Queue Queue Queue 인터페이스 메서드 메소드 설명 boolean add(E e) 넣기 E remove( ) 꺼내기 E elem..
☕ Java
Set 컬렉션 클래스 인스턴스 저장 순서를 유지하지 않는다. 동일 인스턴스의 중복 저장을 허용하지 않는다. 컬렉션 클래스 설명 HashSet 해시 자료구조를 기반으로 인스턴스를 저장, 정렬 x TreeSet 트리 자료구조를 기반으로 인스턴스를 저장, 정렬 o public class SetCollection_Feature { public static void main(String[] args) { Set set = new HashSet(); set.add("cat"); set.add("dog"); set.add("pig"); set.add("dog"); // 동일 인스턴스 저장 x System.out.println("저장된 인스턴스 수: " + set.size()); // for-each문을 이용한 전체 ..
List 컬렉션 클래스 인스턴스 저장 순서가 유지된다. (나란히) 동일 인스턴스의 중복 저장을 허용한다. 공간의 크기를 신경쓰지 않아도 된다. (알아서 변경해줌) 클래스 자료구조 설명 ArrayList 배열 기반 자료구조 배열을 이용해 인스턴스를 저장 LinkedList 리스트 기반 자료구조 리스트를 구성해 인스턴스 저장 ArrayList 가장 많이 사용되는 컬렉션 클래스 중 하나이다. 장점 저장된 인스턴스의 참조가 빠르다 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있다. 단점 저장 공간을 늘리는 과정에서 시간이 비교적 많이 소요된다. 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 더 큰 공간의 새로은 배열을 생성해 기존 배열에 있던 데이터를 새 배열에 ..
Map 인터페이스 Map 인터페이스를 구현하는 컬렉션 클래스들의 인스턴스들은 Key와 Value가 한 쌍을 이루는 형태로 데이터를 저장한다. Key는 Value를 찾는 지표가 되며, Value가 실질적인 데이터가 된다. 이때 Key는 중복될수 없으며, Key가 다르다면 Value는 중복되어도 상관없다. Map 인터페이스의 메소드 메소드 설명 V put(K key, V value) value를 key에 연결(mapping)하여 저장 V get(Object key) 전달된 key에 대응하는 value를 반환 해당 key에 연결(mapping)되는 value가 없으면 null 반환 V remove(Object key) 전달된 key에 대응하는 value를 제거 V replace(K key, V value) 전..
컬렉션 프레임워크 자바에서 컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화 된 방법을 제공하는 클래스들의 모임을 의미한다. 즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 미리 구현해 놓은 것이다. ❓ 프레임 워크 프레임 워크(Framework)란 프로그래머들이 쓸 수 있도록 "잘 정의 된 클래스들의 모임"을 말한다. 프레임 워크는 관련 클래스 정의에 적용되는 설계원칙 또는 구조가 존재한다. ❓ 자료구조와 알고리즘 자료구조는 데이터의 탐색, 삭제 등 다양한 측면을 고려한 데이터의 효율적인 저장 방법을 연구하는 학문이다. 알고리즘은 저장된 데이터의 일부 또는 전체를 대상으로 각종 가공 및 처리의의 방법을 연구하는 학문이다. 대표적인 자료구조 : ..
와일드 카드 💡 제네릭 메소드 vs 일반 메소드 // 제네릭 메소드 정의 public static void peekBox(Box box) { System.out.println(box); } // 일반 메소드 정의 public static void peekBox(Box box) { System.out.println(box); } 제네릭 메소드의 Box의 T에는 Box의 인스턴스, Box의 인스턴스를 모두 인자로 전달 가능하다. 일반 메소드의 Box는 매개변수화 타입으로, Box의 인스턴스, Box의 인스턴스를 인자로 전달 가능할 것 같지만 불가능하다. Box와 Box, Box는 상속 관계를 형성하지 않는다. Object와 String과 Integer는 상속 관계이지만, Box은 매개변수화 타입으로 또 하나..
제네릭 클래스의 상속 제네릭 클래스는 상속이 가능하다. 이때 T의 인자가 서로 다르면 상속관계를 형성하지 않는다. 예) Box box = new Box( ); // 불가능 Object와 String는 상속관계이지만, Box와 Box는 상속관계를 형성하지 않는다. Box와 Box은 상속관계를 형성하지 않는 별개의 자료형이기 때문이다. 이러한 자료형을 "매개변수화 타입" 또는 "제네릭 타입"이라 한다. class Box { // 제네릭 클래스 (상위 클래스) protected T ob; public void set(T o) { ob = o;} public T get() { return ob;} } class SteelBox extends Box { // 제네릭 클래스 (하위 클래스) public SteelB..
제네릭 제네릭(Generic)이란 데이터의 타입을 일반화(generalize)한다는 의미로 클래스나 메소드에서 사용할 데이터의 타입을 컴파일 시 미리 지정하는 방법이다. 제네릭을 사용 시 장점 타입 변환 및 타입 검사같은 번거로운 작업을 제거할 수 있다. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. → 실수가 컴파일 오류로 이어짐 제네릭 선언 및 생성 💡 제네릭 클래스 정의 인스턴스 생성시 결정이 되는 자료형의 정보를 로 대체한다. class Box { private T ob; public void set(T o) { ob = o; } public T get( ) { return ab; } } 💡 제네릭 인스턴스 생성 Box aBox = new Box( ); // T를 Appl..