공부/Java
-
Iterator<E>공부/Java 2024. 4. 22. 17:57
Iterator - 클래스를 작성할 때, Object타입 대신 T와 같은 타입 변수를 사용 - 기존엔 Object타입이기 때문에 이터레이터를 활용하기 위해 형변환이 필요했다. ※ 참조타입이 일치하지 않기 때문 - 하지만 지네릭 클래스를 활용하면 Object 타입이 아닌 직접 지정한 참조타입이 반환된다. 맞는 타입이 반환되게 되기에, 추가적인 형변환이 필요하지 않는다. 지네릭 클래스를 잘 활용하게 되면 코드는 훨씬 간결해지고, 컴파일 타임에 타입을 더 정확히 체크할 수 있다.
-
지네릭스 용어, 지네릭 타입과 다형성공부/Java 2024. 4. 20. 19:18
지네릭스 용어, 지네릭 타입과 다형성 지네릭스 용어 Box 지네릭 클래스, 'T의 Box' 또는 'T Box'라고 읽는다. T 타입 변수 또는 타입 매개변수 (T는 타입 문자) Box 일반 클래스, 원시 타입 (raw type) 지네릭 타입과 다형성 아래 예제들은 다음과 같은 관계의 클래스를 갖고 있다고 하자. class Product{} class Tv extends Product{} class Audio extends Product{} - 참조 변수와 생성자의 대입된 타입은 일치해야 한다. ArrayList list = new ArrayList();// 정상작동 ArrayList list = new ArrayList();// 에러 (불일치) - 지네릭 클래스 간의 다형성은 성립한다. ※ 여전히 대입된..
-
타입 변수공부/Java 2024. 4. 19. 21:49
타입 변수 - 지네릭스 클래스를 작성할 때, Object 타입 대신 타입 변수(E)를 선언해서 사용한다. 타입 변수에 대입하기 - 객체를 생성시, 타입 변수(E) 대신 실체 타입을 지정(대입) - 타입 변수 대신 실제 타입이 지정되면, 형변환 생략 가능 예제 class Tv{} class Audio{} public class ANewDream109{ public static void main(String[] args){ ArrayList list = new ArrayList();//Tv타입의 객체만 저장 가능 list.add(new Tv()); // list.add(new Audio());-> 에러 Tv t = list.get(0); } } 위 예제에서 ArrayList list = new ArrayLi..
-
지네릭스(Generics)공부/Java 2024. 4. 19. 21:30
지네릭스(Generics) - 컴파일시 타입을 체크해 주는 기능(compile-time type check) ※ JDK1.5부터 사용 가능 - 클래스 옆에 붙이는 가 지네릭스다. - 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여준다. 예제 ArrayList list = new ArrayList(); list.add(10); list.add(20); //list.add("30");-> 에러 안에 담을 타입을 넣어주면 해당되는 타입만 넣을 수 있다. 위 예제는 ArrayList로, Integer 타입만 ArrayList 안에 넣을 수 있다. "30" 이라는 String을 넣으려 하면 에러가 발생한다. 지네릭스의 장점 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간..
-
Collections 클래스공부/Java 2024. 4. 18. 17:26
Collections 클래스 ※ java.util.Collection은 인터페이스고, java.util.Collections는 클래스다. 컬렉션을 위한 메서드(static)를 제공한다. - 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등 - 컬렉션의 동기화 - synchronizedXXX() 싱크로나이즈 뒤에 동기화 시킬 걸 넣으면 된다. ex. List syncList = Collections.synchronizedList(new ArrayList(...)); - 변경불가 (readOnly) 컬렉션 만들기 - unmodifiableXXX() - 싱글톤 컬렉션 만글기 - singletonXXX() 단 하나의 객체만들 저장하는 컬렉션을 만들어..
-
해싱(hashing)공부/Java 2024. 4. 17. 16:31
해싱(hashing) - 해시함수를 이용해 데이터를 저장하고 읽어올 수 있다. - 해시함수(hash function)로 해시 테이블(hash table)에 데이터를 저장하고, 검색한다. - 해시테이블은 배열과 링크드 리스트가 조합된 형태다. [ 해시테이블에 저장된 데이터를 가져오는 방법] 1. 키로 해시함수를 호출해서 해시코드(배열의 index)를 얻는다 2. 해시코드(해시함수의 반환값)에 대응하는 링크드리스트를 배열에서 찾는다. 3. 링크드리스트에서 키와 일치하는 데이터를 찾는다. ※ 해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야 한다. 서로 다른 키일지라도 같은 값의 해시코드를 반환할 수도 있다.
-
HashMap공부/Java 2024. 4. 17. 16:31
HashMap - Map 인터페이스를 구현한 대표적인 컬렉션 클래스며, 데이터를 키와 값의 쌍으로 저장한다. 키(key) 컬렉션 내의 키(key) 중 유일해야 한다. 값(value) 키(key)와 달리 데이터의 중복을 허용한다. - 순서가 저장되지 않으며, 키는 중복이 허용되지 않는다. 값은 중복이 있을 수 있다. ※ 순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다. - HashMap(동기화X)은 Hashtable(동기화O)의 신버전이다. - 해싱(hashing) 기법으로 데이터를 저장하기 때문에 데이터가 많아도 검색이 빠르다. ※ 해싱(hashing) 자세히 해싱(hashing) 해싱(hashing) - 해시함수를 이용해 데이터를 저장하고 읽어올 수 있다. - 해시함수(hash fu..
-
TreeSet공부/Java 2024. 4. 16. 23:02
TreeSet - 이진 탐색 트리(binary search tree)로 구현되어 있으며, 범위 탐색과 정렬에 유리하다. - 데이터를 저장할 때 boolean add(Object o)를 사용한다. 루트부터 트리를 따라 내려가며 값을 비교한다. ※ 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖는다. 각 요소(node)가 나무(tree) 형태로 연결 (LinkedList의 변형) ※ 첫 번째 요소를 루트(root)라고 부른다. ※ 이진 트리의 모든 노드를 한번씩 읽는 것을 트리순회(tredd traversal)라고 한다. 전위, 중위, 후위 순회법이 있으며, 중위 순회하면 오름차순으로 정렬된다. 이진 탐색 트리 - 부모보다 작은 값은 왼쪽, 큰 값은 오른쪽에 저장한다. - 데이터가 많아질수록 추가, 삭..