일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 구현
- database
- bit manipulation
- Math
- 자바
- sorting
- Counting
- implement
- Stack
- SQL
- 코딩테스트
- Number Theory
- Matrix
- geometry
- Data Structure
- dynamic programming
- two pointers
- 코테
- 파이썬
- string
- Binary Search
- hash table
- greedy
- array
- Class
- simulation
- Binary Tree
- Tree
- Method
- java
- Today
- Total
목록Java (109)
코린이의 소소한 공부노트
[와일드카드 ‘?’ 사용 이유] - 지네릭 타입을 이용한 선언문 작성 시 타입이 같아야 한다.. ArrayList list = new ArrayList(); // OK list = new ArrayList(); // 지네릭 타입이 달라서 에러 list = new ArrayList(); // 지네릭 타입이 달라서 에러 - 지네릭 타입에 와일드카드를 쓰면, 하나의 참조변수로 여러 타입의 객체를 참조할 수 있다. ArrayList - 제한 없음 - 모든 타입 가능 -
[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(); // 타입 불일치로..
class Product {}// 부모 class Tv extends Product {}// 자식1 class Audio extends Product {}// 자식2 3가지 부모-자식 클래스들을 이용해서 지네릭스에 다형성이 어떤 식으로 적용되는지 살펴보려 한다. 1. 참조변수와 생성자에 대입된 타입은 무조건 일치해야 한다. ArrayList productList = new ArrayList();// OK ArrayList tvList = new ArrayList(); // OK ArrayList tvList = new ArrayList(); // 에러. 부모 자손 관계여도 지네릭 타입이 다르면 에러 2. 지네릭 클래스 간의 다형성은 성립한다. 대입된 타입은 같아야 한다. List tvList = new ..
// 지네릭스를 사용하지 않던 시절.. // 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 ..