본문 바로가기

전체 글

(61)
지네릭스(Generics) 출처 - Java의 정석 기초편 (남궁 성) 1. 지네릭스 - 컬렉션 클래스 컴파일시 타입 체크 해주는 기능(compile-time type check)-JDK 1.5 - 컴파일러 한계: 실행시 에러(형변환 에러)→컴파일 에러→지네릭스 도입 - 장점: 타입 안정성 제공, 타입 체크와 형변환 생략 가능 // Tv객체만 저장할 수 있는 ArrayList 생성 ArrayList tvList = new ArrayList(); // 타입 지정 tvList.add(new Tv()); // tvList.add(new Audio()); // 컴파일 에러, Tv 타입 외 저장 불가 Tv t = tvList.get(0); // 저장된 객체 꺼낼 때 Object가 아닌 Tv 반환 → 형변환 불필요 2. 타입 변수(type ..
HashMap, TreeMap, Collections 출처 - Java의 정석 기초편 (남궁 성) 1. HashMap - Map인터페이스를 구현: 순서 X, 중복(키 X, 값 O) - Hashtable(old, 동기화 O) ≒ HashMap(new, 동기화 X) - LinkedHashMap: 저장순서 유지 - TreeMap ≒ TreeSet(키-값 저장 외 같음) Entry[] table; class Entry { // 객체지향코드 Object key; Object value; } 2. HashMap의 키(key)와 값(value) - 해싱(hashing): 해시함수→해시테이블에 데이터 저장, 검색→데이터 검색 빠름 - 해시테이블: 배열(접근성)과 링크드 리스트(변경 용이) 조합 - 해시코드(해시 함수 반환값)에 대응하는 배열의 링크드 리스트에서 키와 일치..
HashSet, TreeSet(binary search tree) 출처 - Java의 정석 기초편 (남궁 성) 1. HashSet - Set(집합)인터페이스를 구현: 순서 X, 중복 X - equals()와 hashCode() 오버라이딩해야 HashSet 바르게 동작 - LinkedHashSet: 저장순서 유지 - TreeSet(from~to): 범위 검색과 정렬에 유리, HashSet 보다 데이터 추가, 삭제에 시간이 더 걸림 Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3", "3"}; Set set = new HashSet(); for(int i=0l i < objArr.length; i++) { set.add(objArr[i]); // 중복 제거 } System.out.println(set); // [1,1..
Arrays, Comparable, Comparator 출처 - Java의 정석 기초편 (남궁 성) 1. Arrays클래스 - 배열을 다루는데 유용한 메서드(모두 static) 제공 - 매개변수 타입 오버로딩 2. 배열→문자열 출력 - to String(): 일차원 배열 - deepToString(): 다차원 배열 int[] arr = {0,1,2,3,4}; int[][] arr2D = {{11,12}, {21,22}}; System.out.println(Arrays.toString(arr)); // [0,1,2,3,4] System.out.println(Arrays.deepToString(arr2D)); // [[11, 12], [21, 22]] 3. 배열 복사 - copyOf(): 배열 전체 - copyOfRange(): 배열 일부 int[] arr = ..
Iterator 출처 - Java의 정석 기초편 (남궁 성) 1. Iterator - Iterator: 컬렉션에 저장된 요소(데이터)를 접근(읽어오기)하는데 사용되는 인터페이스(표준화→코드 재사용성 용이) - ListIterator: Iterator 접근성 향상(단방향→양방향), next()-previous() - Enumeration: Iterator 구버전 public interface Collection { // 자손 List와 Set도 iterator() 포함 public Iterator iterator(); // Iterator를 구현한 클래스의 인스턴스 반환 } public interface Iterator { boolean hasNext(); Object next(); void remove(); } List..
스택(Stack), 큐(Queue) 출처 - Java의 정석 기초편 (남궁 성) 1. 개념 - 스택: 밑 막힌 상자, LIFO(Last In First Out), 저장(push)-추출(pop), 배열기반 컬렉션 클래스로 구현(ArrayList) - 큐: 밑 뚫린 파이프, FIFO(First In First Out), 저장(offer)-추출(poll), 연결기반 컬렉션 클래스로 구현(LinkedList) 2. Stack - 스택 사용하려면 클래스 사용 Stack st = new stack(); st.push("0"); // Stack 메서드 boolean empty() Object peek() // 꺼내지 않고 맨 위 객체 반환(보기만 함) Object pop() // 맨 위에 객체 삭제 Object push(Object item) // 객..
ArrayList, LinkedList 출처 - Java의 정석 기초편 (남궁 성) 1. ArrayList - List인터페이스를 구현: 순서 O, 중복 O - 배열 기반: 데이터 저장공간으로 배열 사용 - 기존 Vector 개선: 구현원리와 기능적인 면 동일, Vector는 자체 동기화 가능 ArrayList() // 기본 생성자(크기 0) ArrayList(Collection c) ArrayList(int initialcapacity) // 초기용량, 배열의 길이 지정 boolean add(Object o) // 마지막에 객체 추가 void add(int index, Object element) boolean addAll(Collection c) boolean addAll(int index, Collection c) void clear()..
컬렉션 프레임웍(collections framework) 출처 - Java의 정석 기초편 (남궁 성) 1. 컬렉션 프레임웍 - 컬렉션(collection): 여러 객체(데이터)를 모아 놓은 것 - 프레임웍(framwork): 표준화된 프로그래밍 방식 → 생산성↑ 유지보수↑ - 컬렉션 프레임웍: 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 - 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 - 객체란? 다수의 데이터, 객체를 다룬다는 건? 저장, 삭제, 검색, 정렬 - java.util 패키지에 포함 - 컬렉션 클래스: 다수의 데이터를 저장할 수 있는 클래스(Vector, ArrayList, HashSet 등) 2. 컬렉션 프레임웍 핵심 인터페이스 - List: 순서 O, 중복 O - Set: 순서 X, 중복 X - Map(키-값): 순..