전체 글
-
HashMap과 지네릭스공부/Java 2024. 4. 23. 11:25
HashMap과 지네릭스 - HashMap은 두개의 타입 변수가 필요하다. - 여러 개의 타입 변수가 필요한 경우, 콤마(,)를 구분자로 선언하며, HashMap로 사용한다. ※ HashMap의 지네릭스에는 키값과 밸류값이 필요하다 ※ HashMap 클래스 내부 public class HashMap extends AbstractMap { //일부 생략 ... public V get(Object key) { /* 내용 생략*/ } public V put(K key, V value) { /* 내용 생략*/ } public V remove(Object key) { /* 내용 생략*/ } ... } 원래 타입변수 K와 V는 Object였다. 하지만 지네릭스를 활용해 타입을 지정한 것이다. 그러면 get으로 꺼낼..
-
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..