일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- two pointers
- database
- Stack
- SQL
- 코테
- geometry
- Number Theory
- Counting
- Class
- Binary Search
- 구현
- 파이썬
- Math
- 자바
- array
- Method
- Data Structure
- implement
- bit manipulation
- greedy
- Tree
- hash table
- string
- Matrix
- simulation
- dynamic programming
- 코딩테스트
- java
- Binary Tree
- sorting
- Today
- Total
목록Class (26)
코린이의 소소한 공부노트
[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개를 쓰려니 너무 많아서 인터페이스로 묶어둔 것이다...
[Optional] 1. T타입 객체의 래퍼클래스이다. public final class Optional { private final T value; // T 타입의 참조변수. null을 포함한 모든 종류의 객체 저장 가능 ... } 2. Optional가 필요한 이유 - null을 직접 다루는 것은 위험하다. 직접 다루다보면 NullPointerException이 발생할 수 있다. - 예외처리를 하려면 try-catch문을 이용하거나, null을 체크하기 위한 if문이 필수적이다. 이때문에 코드가 지저분해진다. - null을 간접적으로 다루려면 null을 참조변수에 직접 넣기보다는 Optional 객체에 넣은 다음, 그 주소값을 참조변수에 저장한다. - 이렇게 하면 참조변수 값을 불러왔을 때 항상 값이..
[쓰레드의 구현 방법] 아래 두 가지 방법 중 하나를 선택한 후 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..
[열거형] 1. 관련된 상수들을 같이 묶어 놓는 것 2. 자바는 타입에 안전한 열거형을 제공한다. - 타입에 안전하다는 것은 값과 타입을 동시에 체크한다는 것을 말한다. // 열거형을 쓰지 않았을 때// 열거형을 쓸 때 class Card1{class Card2{ // 무늬 // 무늬 0 1 2 3 static final int CLOVER = 0; enum Kind { CLOVER, HEART, DIAMOND, SPADE } static final int HEART = 1 // 열거형 Kind 정의 static final int DIAMOND = 2; static final int SPADE = 3; // 숫자 // 숫자 0 1 2 static final int TWO = 0; enum Value { ..
[Iterator] - 클래스를 작성할 때 Object타입 대신 T와 같은 타입 변수를 사용한다. // 일반 클래스// 지네릭 클래스 public interface Iterator{public interface Iterator{ boolean hasNext();boolean hasNext(); Object next();E next(); void remove();void remove(); }} // 생성 및 사용 Iterator it = list.iterator();Iterator it = list.iterator(); while(it.hasNext()){while(it.hasNext()){ Student s = (Student)it.next();Student s = it.next(); // 타입 불일치로..
[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..
[Arrays 클래스] 1. 배열을 다루기 편리한 (static)메서드를 제공하는 유틸 클래스다. 2. java.util 패키지에 있다. [Arrays 클래스의 메서드] 1. 배열의 출력: toString() static String toString(X[] a) // 여러가지 타입이 들어갈 수 있게 오버로딩 되어 있음 // X에 들어가는 것 // 기본형 8가지: boolean, char, byte, short, int, long, double, float // Object int[] arr = {0,1,2,3,4}; System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4] 2. 배열의 복사: copyOf(), copyOfRange() int[] arr ..
[스택과 큐 비교] 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에서 객체..
[배열의 장점] 1. 구조가 간단하다. 2. 연속적이기 때문에 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. [배열의 단점] 1. 크기를 변경할 수 없다. - 크기 변경을 해야 할 경우, 새로운 배열을 생성하고 데이터를 복사해야 한다.. - 크기 변경을 피하기 위해 큰 배열을 생성하면 메모리가 낭비된다. 2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다. - 배열 중간에 요소를 추가, 삭제하려면 다른 데이터를 옮겨야 한다. - 순차적인 데이터 추가(맨 끝에), 삭제(맨 끝부터)는 매우 빠르다. [LinkedList, 링크드 리스트] 1. 배열의 단점(크기 변경 불가, 긴 데이터 추가/삭제 시간)을 보완한 자료구조이다. 2. 불연속적으로 존재하는 데이터를 연결한 리스트이..
[형식화 클래스] - 숫자와 날짜를 원하는 형식으로 쉽게 출력 가능하게 해주는 클래스 - java.text패키지의 DecimalFormat, SimpleDateFormat 클래스가 이에 해당된다. [DecimalFormat 클래스] 1. 숫자를 형식화할 때 사용하는 클래스(숫자 -> 형식 문자열) double num = 1234567.89; DecimalFormat df = new DecimalFormat("#.#E0"); String s = df.format(num); // s = "1.2E6" // 1234567.89 -> 1.2*10^6 2. 패턴에 쓰이는 기호 1) 0: 10진수(값이 없을 때, 즉 빈자리는 0으로 채움) 1234567.89 패턴 -> 결과 0 -> 1234568 0.0 -> 12..