본문 바로가기

반응형

분류 전체보기

Chpt 11. 컬렉션 프레임워크 - 주제 4. Set 인터페이스와 구현 클래스들 1. Set 인터페이스의 메서드 메서드는 모두 Collection 인터페이스로부터 상속 받은 것들이다. 참고 2. 구현 클래스 핵심 구현 클래스는 노란색으로 강조돼 있다. 1) HashSet [들어가기 앞서] 해싱 (Hashing) 해시 함수를 이용해 주어진 입력값들의 리턴값을 해시 테이블에 저장, 읽어오는 방식을 해싱이라고 한다. 해시 함수의 결과값은 index이고 이는 배열에 저장된다. 서로 다른 입력 값은 같은 해시 코드를 가질 수 있다. 따라서 해시 테이블은 배열과 LinkedList를 연결해 놓은 구조를 가진다. Hash로 시작하는 컬렉션 클래스는 모두 이러한 형태로 데이터를 저장하고 있다. 해싱을 사용하면 많은 양의 데이터를 검색할 때 유리하다. (1) 특징 중복을 허용하지 않기 때문에 add.. 더보기
Chpt 11. 컬렉션 프레임워크 - 주제 2. 저장된 요소를 접근하는 Iterator 인터페이스 Iterator 이외에도 저장된 요소에 접근하는 ListIterator, Enumeration 인터페이스가 있지만 다음과 같은 차이점 정도만 알아두자. 1. Iterator 인터페이스 Iterator는 저장된 요소를 읽는 방법을 표준화한 인터페이스이다. 다음과 같이 Iterator 인터페이스에는 확인과 읽기 두 가지메서드가 있다. public interface Iterator { boolean hasNext() // (1) 확인 Object next(); // (2) 읽기 void remove(); } public interface Collection { ... public Iterator iterator(); ... } 1) List, Set의 요소 읽기 Collection 인터페이스의 iterator.. 더보기
Chpt 11. 컬렉션 프레임워크 - 주제 3. List 인터페이스와 구현 클래스들 1. List 인터페이스의 메서드 1) Collection 인터페이스 메서드 참고 2) List 인터페이스 메서드 참고 2. 구현 클래스 핵심 구현 클래스는 노란색으로 강조돼 있다. 1) ArrayList (1) 특징 (1) Object 배열을 갖고 있다. - 모든 종류의 객체를 담을 수 있다. - 순차적으로 객체가 저장된다. - 변경 작업 중에 크기가 부족하면 ① 새로운 배열을 생성 ② 복사 ③ 새로운 배열로 참조 변경 (2) 삭제 과정 - 마지막 데이터 null로 변경 - 그 외 ① 삭제할 데이터의 인덱스보다 큰 인덱스들을 모두 왼쪽으로 하나씩 이동 ② 마지막 데이터 null로 변경 (3) 추가 과정 ① 추가할 데이터의 인덱스보다 큰 인덱스들을 모두 오른쪽으로 하나씩 이동 ② 빈 인덱스에 데이터 추가.. 더보기
Chpt 11. 컬렉션 프레임워크 - 주제 1. 컬렉션 프레임워크와 핵심 인터페이스 1. 컬렉션 프레임워크 컬렉션 프레임워크 = Collection + Framework 단어 각각의 의미를 살펴보자. Collection은 데이터 그룹, framework는 정형화된 프로그래밍 방식이다. 즉, 컬렉션 프레임워크란 다수의 데이터를 저장하는 클래스들을 효율적으로 다루기 위한 표준화된 프로그래밍 방식이다. 앞서 말한 데이터를 저장하는 클래스들을 컬렉션 클래스라고 한다. 1) 라이브러리 vs. 프레임워크 라이브러리 = 유용한 기능 프레임워크 = 유용한 기능 + 표준화된 프로그래밍 방식 이러한 프레임워크의 방식은 개발 생산성과 재사용성을 높이고, 유지 보수를 용이하게 한다. 2) 핵심 인터페이스 조상 인터페이스 인터페이스 특징 구현 클래스 예 저장 순서 중복 Collection List O O Ar.. 더보기
Chpt 9. java.lang 패키지, util 클래스 - 주제 4. 래퍼 클래스 1. 래퍼 클래스 객체 지향에서의 모든 것들은 객체로 다루어저야 한다. 래퍼 클래스는 이와 같은 특징을 반영하는 즉, 기본형을 감싸는 클래스이다. 다음은 래퍼 클래스의 종류와 생성자이다. 기본형 래퍼 클래스 생성자 메서드 / 상수 boolean Boolean Boolean(boolean value) Boolean(String s) (1) toString(), equals() 모두 오버라이딩 되어있다. (2) 비교 연산자를 사용하는 것이 불가하기 때문에 compareTo()를 사용한다. (3) 상수로는 MAX_VAULE, MIN_VALUE, SIZE, BYTES, TYPE이 있다. (4) 문자열 → 기본형 타입.parse타입(문자열) (5) 기본형 → 문자열 String.valueOf(기본형) (OR 기본.. 더보기
Chpt 9. java.lang 패키지, util 클래스 - 주제 3. Math 클래스 Math 클래스 생성자의 접근 제어자는 private인데, 모든 멤버가 static이므로 인스턴스를 생성할 필요가 없기 때문이다. 자주 사용하는 메서드는 다음과 같다. 메서드 / 설명 참고 static double abs(double a) static double abs(float f) static double abs(int f) static double abs(long f) static double ceil(double a) 음수의 경우 헷갈리지 않도록 주의하자. static double floor(double a) static double max(double a, double b) static float max(float a, float b) static int max(int a, int b) sta.. 더보기
Chpt 9. java.lang 패키지, util 클래스 - 주제 2. String vs. StringBuffer 클래스 String 클래스 StringBuffer 클래스 문자열 크기 생성할 때 문자열의 크기와 같음 생성자를 통해 지정 가능 (1) 정수값 인자: 정수값 (2) 인자가 없을 경우 16 (3) 문자열 인자: 문자열의 크기 + 16 변경 가능 여부 X (immutable) O (mutable) 비교 (==) 객체 주소 비교 equals 오버라이딩 O, 값 비교 오버라이딩 X, 객체 주소 비교 => (1) toString(), (2) equals() 1. String 클래스 1) 변경 불가 (immutable) vs. 변경 가능 (mutable) 클래스 변경이 불가하다는 말은 연산을 할 때마다 새로운 인스턴스가 생성된다는 말이다. 따라서 추가, 변경, 삭제 등의 작업을 할 때는 StringBuffer 클래스를 사용.. 더보기
Chpt 9. java.lang 패키지, util 클래스 - 주제 1. Object 클래스 java.lang 패키지는 기본적인 클래스를 포함하고 있으며 import문 없이 바로 사용할 수 있다. Object 클래스도 이 중 하나이다. Object 클래스는 모든 클래스의 최고 조상이므로 모든 클래스에서 Object 클래스의 메서드를 사용할 수 있다. 1. protected Object clone() 객체 자신의 복사본을 반환한다. 오버라이딩 할 때 public으로 접근 제어자를 변경해야 상속하는 자손 뿐만 아니라 후손까지도 사용할 수 있다. 2. public Class getClass() 객체 자신의 클래스 정보를 담고 있는 Class 타입의 인스턴스를 반환한다. Hello.java 파일을 컴파일하면 Hello.class 파일이 만들어지는데 이때 메모리에 Hello의 Class 타입 인스턴스가 .. 더보기

반응형