일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바
- greedy
- java
- Binary Tree
- dynamic programming
- SQL
- Class
- Binary Search
- string
- Math
- 구현
- geometry
- sorting
- Tree
- Counting
- Method
- two pointers
- bit manipulation
- Number Theory
- array
- Stack
- simulation
- Data Structure
- 코딩테스트
- 코테
- hash table
- Matrix
- 파이썬
- implement
- database
- Today
- Total
목록interface (13)
코린이의 소소한 공부노트
[collect()] 1. Collector 인터페이스를 매개변수로 하는 스트림의 최종연산 2. reduce()는 전체에 대해 리듀싱, collect()는 그룹별로 리듀싱 // 스트림의 요소를 수집. 요소를 그룹화/분할한 결과를 컬렉션에 담아서 반환. 최종 연산의 핵심2 R collect(Collector collector) // Collector를 구현한 클래스의 객체를 매개변수로 R collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) // 잘 안씀 [Collector] 1. 수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스 2. collect()의 매개변수를 5개를 쓰려니 너무 많아서 인터페이스로 묶어둔 것이다...
[java.util.function 패키지] - 자주 사용되는 다양한 함수형 인터페이스를 제공하는 패키지 1. 기본 함수형 인터페이스 - 함수는 반환값이 0개 또는 1개이다. // 1) java.lang.Runnable 인터페이스 void run() // 매개변수X, 반환값X // 2) Supplier 인터페이스 T get() // 매개변수X, 반환값 1개 // 3) Consumer 인터페이스 void accept(T t) // 매개변수 1개, 반환값X -> Supplier와 반대 // 4) Function 인터페이스 R apply(T t) // 매개변수 1개, 반환값 1개 -> 일반적인 함수 // 5) Predicate 인터페이스 boolean test(T t) // 매개변수 1개, 반환값 논리형 ->..
[함수형 인터페이스] 1. 정의: 단 하나의 추상 메서드만 선언된 인터페이스 @FunctionalInterface // 생략할 수 있지만 이 애너테이션을 달아두면 컴파일러가 확인해줌 interface MyFunction { // 인터페이스의 추상 메서드는 모두 public abstract public abstract int max(int a, int b); // 제어자 생략 가능 public abstract int max2(int a, int b); // 함수형 인터페이스의 추상 메서드는 1개여야 하기 때문에 // 애너테이션을 달면 에러 발생. 달지 않으면 에러X } // MyFunction 구현 MyFunction f = new MyFunction(){ // 익명 클래스의 선언 + 객체 생성 publi..
[쓰레드의 구현 방법] 아래 두 가지 방법 중 하나를 선택한 후 run()에 쓰레드로 작업하고자 하는 내용을 채운다. 1. Thread 클래스를 상속받는다. class MyThread1 extends Thread{ public void run(){ // Thread 클래스의 run() 오버라이딩 for(int i=0; i < 5; i++) System.out.println(getName()); // 조상인 Thread의 getName()을 호출 // this.getName()에서 this가 생략된 형태 } } 2. Runnable 인터페이스를 구현한다. (권장. 자바는 단일 상속) public interface Runnable{ public abstract void run(); } class MyThre..
[HashMap, Hashtable 클래스] public class HashMap extends AbstractMap implements Map, Cloneable, Serializable{ transient Entry[] table; // key-value를 담고 있는 배열 // ... static class Entry implements Map.Entry{ // Map.Entry는 Map의 내부에 선언된 인터페이스 final Object key; Object value; // ... } } // 비 객체지향적인 코드 Object[] key; Object[] value; // 따로 관리 // 객체지향적인 코드 Entry[] table; class Entry{ Object key; Object value..
[TreeSet 클래스] 1. Set 인터페이스를 구현한 컬렉션 클래스 2. 순서를 유지하지 않고, 중복을 허용하지 않는다. 3. 범위 검색과 정렬에 유리한 컬렉션 클래스 - 이진 탐색 트리(binary search tree)로 구현함 - 이진 탐색 트리는 부모보다 작은 값을 왼쪽에, 큰 값은 오른쪽에 저장 4. 객체 저장시 비교를 하기 때문에 따로 정렬해줄 필요가 없다. - 데이터가 많아질수록 비교 횟수가 증가하기 때문에 HashSet보다 추가, 삭제에 시간이 더 걸리게 된다. 5. 링크드 리스트처럼 각 요소(node)가 나무(tree) 형태로(tree) 연결된 구조 - 가장 상위 노드는 루트(root)라고 부름 - 이진 트리는 모든 노드가 0~2개의 하위 노드를 가짐(부모-자식관계) [TreeSet의..
[HashSet 클래스] 1. Set 인터페이스를 구현한 대표적인 컬렉션 클래스 2. 순서를 유지하지 않는다 -> 순서를 유지하려면 LinkedHashSet 클래스를 사용하면 된다. 3. 중복을 허용하지 않는다 -> 객체를 저장하기 전에 기존에 같은 객체가 있는지 확인한다. [생성자] HashSet() // 기본 생성자 HashSet(Collection c) // c에 저장된 객체를 담은 HaseSet 생성 HashSet(int initialCapacity) // 초기 용량 설정 HashSet(int initialCapacity, float loadFactor) // 초기 용량 + 용량을 늘리는 시기 설정 // loadFactor=0.8이면 80%가 찼을 때 용량 늘림 // 보통은 2배로 늘린다. [메서..
[객체 정렬 인터페이스] 객체를 정렬할 때는 정렬 대상과 정렬 기준이 필요하다. 이때 객체 정렬에 필요한 메서드(정렬 기준 제공)를 정의한 인터페이스가 바로 컴페러터와 컴페어러블이다. // Comparable 기본 정렬 기준을 구현하는데 사용 public interface Comparable{ int compareTo(Object o); // o와 자신(this)을 비교 } // Comparator 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용 public interface Comparator{ int compare(Object o1, Object o2); // o1과 o2를 비교. o1이 크면 1, 같으면 0, 작으면 –1 반환 boolean equals(Object obj); // 오버라..
[이터레이터, 리스트이터레이터, 이뉴머레이션 인터페이스] 1. 컬렉션에 저장된 데이터를 접근(읽어오기)하는 데 사용되는 인터페이스다. 2. Enumeration은 Iterator의 구버전이고, ListIterator는 Iterator의 접근성을 향상시킨 것이다.(단방향 -> 양방향) [Iterator 인터페이스의 메서드] boolean hasNext() // 읽어 올 요소가 남아있는지 확인한다. // 있으면 true, 없으면 false를 반환한다. Object next() // 다음 요소를 읽어온다. // hasNext()로 먼저 확인하는 것이 안전하다. void remove() // next()로 읽어 온 요소를 삭제한다. // next()를 호출한 다음 remove()를 호출해야한다.(선택적 기능) ..
[스택과 큐 비교] 1. 스택 - LIFO(Last In First Out) - 밑이 막힌 상자 - 마지막에 저장(push)된 것을 제일 먼저 꺼내게(pop) 되는 구조 - 배열로 구현하는 것이 효율적이다. 순방향/역방향 접근이 빠르기 때문이다. 2. 큐 - FIFO(First In First Out) - 밑이 뚫린 상자 - 제일 먼저 저장(offer)된 것을 먼저 꺼내게(poll) 되는 구조 - 링크드 리스트로 구현하는 것이 효율적이다. 맨 앞 삭제시 자리 이동이 필요 없기 때문이다. [스택과 큐의 메서드] 1. 스택 boolean empty() // Stack이 비어있는지 알려준다. Object peek() // Stack의 맨 위에 저장된 객체를 읽어온다. // pop()과 달리 Stack에서 객체..