정렬 제네릭 Comparator 컬렉션 클래스

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
인스턴스 변수와 메소드의 상호 관계에 대해 알아봅니다. 매개변수와 리턴값에 대해 알아봅니다. 객체의 동치에 대해 알아봅니다.
원시 변수와 레퍼런스 변수에 대해 알아봅니다. 변수가 저장되는 힙에 대해 알아봅니다. 배열에 대해 알아봅니다.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
연결리스트(linked list).
(collection framework)
직렬화와 역직렬화에 대하여 직렬화 가능 클래스의 선언 방법
7장 배열 ②.
스택과 힙 지역변수와 인스턴스 변수 객체 생성과 생성자 객체 제거 (가비지 컬렉션)
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
[INA470] Java Programming Youn-Hee Han
Lesson 9. 예외처리.
Lesson 6. 형변환.
Power Java 제14장 제네릭과 컬렉션.
8장. 심각한 다형성 “추상”과 “구상”의 차이점에 대해 알아봅니다. Object 클래스에 대해 알아봅니다.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Power Java 제14장 배치 관리자.
Lesson 7. 클래스와 메소드 - 1.
10장. 예외처리.
자바 5.0 프로그래밍.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
자바응용.
인터넷응용프로그래밍 JavaScript(Intro).
15장. 컬렉션 프레임워크.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
SpringFramework 중간고사 요약 REST by SpringFramework.
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
JA A V W. 06.
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
CHAP 21. 전화, SMS, 주소록.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
데이터 동적 할당 Collection class.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
발표자 : 이지연 Programming Systems Lab.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
제 4 장 Record.
Power Java 제14장 배치 관리자.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
12장. 자료구조로 사용되는 클래스 자료구조란? 자료구조 클래스의 사용방법.
C++ Espresso 제15장 STL 알고리즘.
6 객체.
Presentation transcript:

정렬 제네릭 Comparator 컬렉션 클래스 16. 컬렉션과 제네릭 정렬 제네릭 Comparator 컬렉션 클래스

ArrayList 원소 정렬하기 ArrayList 원소들을 정렬하려면 어떻게 해야 할까? API를 뒤져서 정렬 기능을 제공하는 메소드가 있는지 확인!! ArrayList에는 정렬용 메소드가 없습니다. 혹시 다른 컬렉션 객체를 쓸 수 있는지 확인 자동으로 정렬되는 TreeSet 같은 클래스를 활용하는 것도 좋은 대안이 될 수 있습니다.

Collections.sort() 메소드 java.util.Collections 클래스의 클래스 메소드인 sort() 메소드를 활용하면 됩니다. public static void sort(List list) java.util.Collections.sort() 메소드를 이용하면 임의의 List 객체를 알파벳순으로 정렬할 수 있습니다. 하지만 String 객체가 아닌, 다른 복잡한 객체로 구성된 리스트는 어떻게 정렬할까요?

Collections.sort() 메소드 <T extends Comparable<? super T>> List<T> list 처음 보는 이상한 기호들이 등장했습니다. 이런 문법들을 이해하기 위해서 제네릭을 공부해야 되겠습니다.

제네릭과 형안전성 제네릭을 활용하지 않는 경우 일단 컬렉션에 들어가고 나면 어떤 유형이었는지를 잊어버리게 됩니다. ArrayList Object Object Object Object

ArrayList<Fish> 제네릭과 형안전성 제네릭을 활용하는 경우 유형이 엉뚱하게 바뀌지 않습니다. 형안전성이 확보됩니다. ArrayList<Fish>

제네릭 사용법 제네릭을 사용하는 클래스 제네릭형 변수 선언 및 대입 제네릭형을 받아들이는 메소드 선언 및 호출 new ArrayList<Song>() 제네릭형 변수 선언 및 대입 List<Song> songList = new ArrayaList<Song>() 제네릭형을 받아들이는 메소드 선언 및 호출 void foo(List<Song> list) x.foo(songList) public <T extends Animal> void takeThing(ArrayList<T> list) public void takeThing(ArrayList<Animal> list)

제네릭 사용법 extends 키워드의 의미 <T extends Comparable<? super T>> 위 코드가 무엇을 뜻하는지 답해보세요.

Comparator 정렬 순서를 정하는 기준을 직접 정하고 싶다면? 또는 Comparable을 구현하지 않는 클래스를 정렬하고 싶다면? java.util.Comparator 사용 sort(List o, Comparator c) 메소드 사용

Comparator 활용 class ArtistCompare implements Comparator<Song> { public int compare(Song one, Song two) { return one.getArtist().compareTo(two.getArtist()); } . ArtistCompare artistCompare = new ArtistCompare(); Collections.sort(songList, artistCompare);

컬렉션의 종류 Collection Set List SortedSet TreeSet LinkedHashSet HashSet ArrayList LinkedList Vector Map SortedMap TreeMap HashMap LinkedHashMap Hashtable

List List 인덱스 제공 ListIterator를 줄 수 있음 ArrayList Vector LinkedList 상당히 빠르고 크기를 마음대로 조절할 수 있는 초강력 배열 Vector ArrayList의 구형 버전. 모든 메소드가 동기화되어 있음 요즘은 대부분 ArrayList를 사용함 LinkedList 목록 끝에 원소를 추가하거나 끝에 있는 원소를 쉽게 제거할 수 있는 메소드 제공 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 많이 쓰임

Set Set 중복된 항목이 들어가는 것을 방지함 equals() 메소드를 이용하여 중복 확인 HashSet 가장 빠른 임의 접근 속도 순서를 전혀 예측할 수 없음 LinkedHashSet 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능 TreeSet 정렬된 순서대로 보관. 정렬 방법을 지정할 수 있음

Map Map 키와 값을 대응시키는 기능을 제공 키와 값은 모두 객체여야만 함 HashMap Hashtable 가장 빠른 임의 접근 기능을 제공 Hashtable HahsMap의 구형 버전 LinkedHashMap LinkedHashSet과 유사. 입력된 순서 또는 가장 최근에 접근된 순서대로 보관 TreeMap 정렬된 순서대로 유지하기에 좋음

객체가 같은지 확인하는 방법 객체 동치 레퍼런스 동치 equals() 메소드에 대해 true가 리턴되는 것 똑같은 객체를 참조해야 하는 것은 아님 레퍼런스 동치 두 레퍼런스가 같은 객체를 참조하는 경우 a == b 가 참이 되어야 함 어떤 조건에서 두 객체가 같다고 인정할 수 있을지 결정한 다음 equals() 메소드를 오버라이드 이 때 hashCode() 메소드도 반드시 오버라이드해야 함 String a = “abc”; if (a.equals(new String(“abc”)) {

와일드카드 와일드카드를 쓸 때는 목록에 새로운 원소를 추가할 수 없음 public <T extends Animal> void takeThing(ArrayList<T> list) public void takeThing(ArrayList<? extends Animal> list) 와일드카드를 쓸 때는 목록에 새로운 원소를 추가할 수 없음

숙제 본문을 다시 한 번 꼼꼼히 읽어봅시다. 본문 중간에 나와있는 코드를 직접 입력해서 컴파일하고 실행해 봅시다. 본문 중간에 있는 각종 연습문제와 16장 끝에 있는 연습문제, 퍼즐을 풀어봅시다.