본문 바로가기

반응형

언어

(188)
제네릭 클래스 만들기, 명품 자바 프로그래밍 7장 * 제네릭 클래스를 작성하는 방법은 기존의 클래스 작성 방법과 유사한데, 클래스 이름 다음에 일반화된 타입(generic type)의 매개변수를 사이에 추가한다는 차이가 있다. 간단한 제네릭 클래스를 작성해보자. 1) 제네릭 클래스 작성 타입 매개변수 T를 가진 제네릭 클래스 MyClass public class MyClass { // 제네릭 클래스 Myclass, 타입 매개변수 T T val; // 변수 val의 타입은 T void set(T a){ val = a; // T 타입의 값 a를 val에 지정 } T get(){ return val; // T 타입의 값 val 리턴 } } 2) 제네릭 클래스에 대한 레퍼런스 변수 선언 제네릭 클래스의 레퍼런스 변수를 선언할 때는 타입 매개변수에 구체적인 타입..
LinkedList, Collections 클래스 활용, 자바 명품 프로그래밍 7장 * LinkedList는 요소들을 양방향으로 연결하여 관리한다는 점을 제외하고 Vector, ArrayList와 거의 같다. LinkedList는 맨 앞과 맨 뒤를 가리키는 head, tail 레퍼런스를 가지고 있어, 맨 앞이나 맨 뒤, 중간에 요소의 삽입이 가능하며 인덱스를 이용하여 요소에 접근할 수 도 있다. * Collections 클래스는 유용한 여러 메소드를 지원한다. sort() - 컬렉션에 포함된 요소들의 정렬 reverse() - 요소를 반대 순으로 정렬 max(), min() - 요소들의 최댓값과 최솟값 찾아내기 binarySearch() - 이진 검색 Collections 클래스의 메소드는 모두 static 타입이므로 Collections 객체를 생성할 필요는 없다. * Collecti..
HashMap, 자바 명품 프로그래밍 7장 * HashMap 컬렉션은 java.util.HashMap의 경로에 있다. '키(Key)'와 '값(Value)'의 쌍으로 구성되는 요소를 다룬다. K는 '키'로 사용할 데이터 타입, V는 '값'으로 사용할 데이터 타입의 타입매개변수이다. 해시맵은 내부에 '키'와 '값'을 저장하는 자료 구조를 가지고, put(), get() 메소드를 이용하여 요소를 삽입하거나 검색한다. HashMap h = new HashMap(); // 해시맵 생성 h.put("apple", "사과"); // "apple" 키와 "사과" 값의 쌍을 h에 삽입 String kor = h.get("apple"); // "apple" 키로 값 검색. kor는 검색된 값, "사과" * 해시맵의 장단점 장점) 1. 요소의 삽입, 삭제 시간이 매..
Iterator 순차 검색, 명품 자바 프로그래밍 7장 * java.util 패키지의 Iterator 인터페이스는 Vector, ArrayList, LinkedList, Set과 같이 요소가 순서대로 저장된 컬렉션에서 요소를 순차 검색할 때 사용하면 편리하다. * 벡터 v의 iterator()를 호출하여, 벡터 v의 각 요소를 순차적으로 검색할 수 있는 Iterator 객체를 얻어낸다. 이때 Iterator 객체를 반복자라고 부른다. Iterator It = v.iterator(); // 벡터 v의 요소를 순차 검색할 Iterator 객체 리턴 * it로 v의 각 요소들을 순차 방문하는 코드이며, 처음 it.next()는 v의 첫 번째 요소를 리턴하고, it는 다음 요소를 가리킨다. while(it.hasNext()) { // it로 벡터의 끝까지 반복 in..
컬렉션 Vector의 활용, 명품 자바 프로그래밍 7장 * Vector (벡터라고 부른다.)는 배열을 가변 크기로 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스이다. 벡터는 삽입되는 요소의 개수에 따라 자동으로 크기를 조절하고, 요소의 삽입과 삭제에 따라 자동으로 요소들의 자리를 이동한다. 생성 ) Vector v = new Vector(); // 정수값만 사용하는 벡터 생성 레퍼런스 변수 선언과 벡터 생성을 분리하여 코드를 만들 수 있다. Vector stringVector; // 제네릭 컬렉션에 대한 레퍼런스 변수 선언 StringVector = new Vector(); // 문자열 벡터 생성 * Vector 클래스의 주요 메소드 메소드 설명 boolean add(E element) 벡터의 맨 뒤에 element 추가 vo..
ArrayList<E>, 자바 명품 프로그래밍 7장 * ArrayList는 가변 크기의 배열을 구현한 컬렉션 클래스이다. 경로명: java.util.ArrayList Vector 클래스와 거의 동일하지만 차이점 ArrayList는 스레드간 동기화를 지원하지 않는다. 다수의 스레드가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 ArrayList의 데이터가 훼손될 우려가 있다. 하지만 멀티스레드 동기화를 위한 시간 소모가 없기 때문에, ArrayList는 Vector보다 속도가 빨르다. 단일 스레드 응용에는 ArrayList가 더 효과적이다. 메소드 설명 boolean add(E element) ArrayList의 맨 뒤에 element 추가 void add(int index, E element) 인덱스 index 위치에 element 삽입 boo..
컬랙션 매개변수 메소드 만들기, 명품 자바 프로그래밍 7장 * Integer 벡터를 매개변수로 받아 원소를 모두 출력하는 printVector() 메소드 작성 public void printVector(Vector v) { for(int i=0; i
컬렉션(Collection)과 제네릭(Generic), 명품 자바 프로그래밍 7장 * 컬렉션(Collection)은 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너(container)이다. 즉, 요소(element) 객체들의 저장소 배열과의 차이 ) 1. 요소의 개수에 따라 크기 자동 조절 2. 요소의 삽입, 삭제에 따른 요소의 위치 자동 이동 장점 ) 1. 고정 크기의 배열을 다루는 어려움 해소 2. 다양한 객체들의 삽입, 삭제, 검색 등의 관리 용이 특징) 1. 컬렉션은 제네릭(Generic)이라는 기법으로 만들어져 있다. 컬렉션 클래스의 이름에는 '타입 매개 변수'인 , , 등이 항상 포함된다. Vector 혹은 Vector과 깉이 구체적인 타입을 지정하면 해당 자료형만 저장하는 벡터로 사용할 수 있다. 하지만 특정..

반응형