일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- greedy
- simulation
- Binary Tree
- Class
- Counting
- implement
- Data Structure
- geometry
- Math
- Stack
- SQL
- dynamic programming
- bit manipulation
- Matrix
- two pointers
- database
- hash table
- Method
- string
- Binary Search
- 파이썬
- Number Theory
- 코테
- java
- sorting
- array
- Tree
- 코딩테스트
- 구현
- 자바
- Today
- Total
목록자바 (584)
코린이의 소소한 공부노트

// 지네릭스를 사용하지 않던 시절.. // ArrayList에는 Object[]가 있음 ArrayList list = new ArrayList(); // 아무 객체나 다 저장 가능 list.add(10); list.add(20); list.add(“30”); // ?? System.out.println(list); // [10, 20, 30] Integer i = list.get(2); // 에러. 2번째 요소는 String이므로 Integer에 저장 불가 Integer i = (Integer)list.get(2); // 컴파일 통과. get()의 반환타입이 Object이므로 형변환 가능. // 하지만 실행단계에서 ClassCastException 발생 [지네릭스] 1. 컴파일시 타입을 체크해주는 기능..

[코딩에 유용한 static 메서드를 제공하는 클래스] 1. Objects: 객체 다루기 2. Arrays: 배열 다루기 3. Collections: 컬렉션 다루기 [기능으로 분류한 Collections의 메서드] 1. 컬렉션 채우기, 복사, 정렬, 검색 – fill(), copy(), sort(), binarySearch() 등 2. 컬렉션의 동기화가 필요할 때 – synchronizedXXX() static CollectionsynchronizedCollection(Collection c) static ListsynchronizedList(List list) static SetsynchronizedSet(Set s) static MapsynchronizedMap(Map m) static SortedS..

[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); // 오버라..

[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. 컬렉션에 저장된 데이터를 접근(읽어오기)하는 데 사용되는 인터페이스다. 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에서 객체..

[배열의 장점] 1. 구조가 간단하다. 2. 연속적이기 때문에 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. [배열의 단점] 1. 크기를 변경할 수 없다. - 크기 변경을 해야 할 경우, 새로운 배열을 생성하고 데이터를 복사해야 한다.. - 크기 변경을 피하기 위해 큰 배열을 생성하면 메모리가 낭비된다. 2. 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다. - 배열 중간에 요소를 추가, 삭제하려면 다른 데이터를 옮겨야 한다. - 순차적인 데이터 추가(맨 끝에), 삭제(맨 끝부터)는 매우 빠르다. [LinkedList, 링크드 리스트] 1. 배열의 단점(크기 변경 불가, 긴 데이터 추가/삭제 시간)을 보완한 자료구조이다. 2. 불연속적으로 존재하는 데이터를 연결한 리스트이..