PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

(Microsoft PowerPoint - java1-lecture9.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - java1-lecture8.ppt [호환 모드]

Microsoft PowerPoint - java1-lecture8.ppt [호환 모드]

Microsoft PowerPoint - java1-lecture8.ppt [호환 모드]

Microsoft PowerPoint - java2-lecture3.ppt [호환 모드]

12-file.key

Microsoft PowerPoint - java2-lecture4.ppt [호환 모드]

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

07 자바의 다양한 클래스.key

PowerPoint Presentation

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Presentation

PowerPoint Presentation

gnu-lee-oop-kor-lec11-1-chap15

항상쌍 ( 키, 값 ) 으로만데이터를저장하는클래스 의최고조상 : Map - Map을조상으로하는클래스, HashTable, HashMap, LinkedHashMap, TreeMap 등은데이터를저장할때반드시 키 와 값 의쌍으로저장한다. - Map에저장되는 키 는중복되면안되

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

Design Issues

PowerPoint Presentation

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

gnu-lee-oop-kor-lec06-3-chap7

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

JAVA PROGRAMMING 실습 09. 예외처리

슬라이드 1

Microsoft PowerPoint - 2강

PowerPoint Presentation

슬라이드 1

PowerPoint Presentation

PowerPoint 프레젠테이션

A Tour of Java V

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

java.lang 패키지 java.util 패키지 java.io 패키지 콜렉션 2

PowerPoint 프레젠테이션

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - lec12 [호환 모드]

쉽게

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - Lect07.pptx

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Microsoft PowerPoint - Lect04.pptx

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

JAVA PROGRAMMING 실습 02. 표준 입출력

Java ...

PowerPoint 프레젠테이션

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

5장.key

untitled

교육자료

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

TEST BANK & SOLUTION

Microsoft Word - java19-1-midterm-answer.doc

Spring Data JPA Many To Many 양방향 관계 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Network Programming

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

슬라이드 1

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

rmi_박준용_final.PDF

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

JVM 메모리구조

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

ThisJava ..

슬라이드 1

Microsoft PowerPoint - RMI.ppt

자바 프로그래밍

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Microsoft PowerPoint 장강의노트.ppt

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

PowerPoint Presentation

JUNIT 실습및발표

Microsoft PowerPoint - CSharp-2-기초문법

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

선형대수학 Linear Algebra

02 C h a p t e r Java

Transcription:

명품 JAVA Essential 1

2 학습목표 1. 컬렉션과제네릭개념 2. Vector<E> 활용 3. ArrayList<E> 활용 4. HashMap<K,V> 활용 5. Iterator<E> 활용 6. 사용자제네릭클래스만들기

컬렉션 (collection) 의개념 3 컬렉션 요소 (element) 라고불리는가변개수의객체들의저장소 객체들의컨테이너라고도불림 요소의개수에따라크기자동조절 요소의삽입, 삭제에따른요소의위치자동이동고정크기의배열을다루는어려움해소다양한객체들의삽입, 삭제, 검색등의관리용이

컬렉션자바인터페이스와클래스 4 Collection<E> Map<K, V> Set<E> List<E> Queue<E> 인터페이스 클래스 HashSet<E> ArrayList<E> Vector<E> LinkedList<E> HashMap<K, V> Stack<E>

컬렉션의특징 5 1. 컬렉션은제네릭 (generics) 기법으로구현 제네릭 특정타입만다루지않고, 여러종류의타입으로변신할수있도록클래스나메소드를일반화시키는기법 클래스나인터페이스이름에 <E>, <K>, <V> 등타입매개변수포함 제네릭컬렉션사례 : 벡터 Vector<E> <E> 에서 E 에구체적인타입을주어구체적인타입만다루는벡터로활용 정수만다루는컬렉션벡터 Vector<Integer> 문자열만다루는컬렉션벡터 Vector<String> 2. 컬렉션의요소는객체만가능 int, char, double 등의기본타입으로구체화불가 컬렉션사례 Vector<int> v = new Vector<int>(); // 컴파일오류. int 는사용불가 Vector<Integer> v = new Vector<Integer>(); // 정상코드

제네릭은형판과같은개념 6 제네릭 클래스나메소드를형판에서찍어내듯이생산할수있도록 일반화된형판을만드는기법

제네릭의기본개념 7 제네릭 JDK 1.5 부터도입 (2004 년기점 ) 모든종류의데이터타입을다룰수있도록일반화된타입매개변수로클래스 ( 인터페이스 ) 나메소드를작성하는기법 C++ 의템플릿 (template) 과동일 정수스택 정수만저장 class Stack<E> {... void push(e element) {... E pop() {...... 제네릭스택 특정타입으로구체화... void push(integer element) {... Integer pop() {......... void push(string element) {... String pop() {...... 문자열스택 20-345 123 10 Good C# C++ Java 문자열만저장

8 제네릭 Stack<E> 클래스

Vector<E> 9 벡터 Vector<E> 의특성 <E> 에사용할요소의특정타입으로구체화 배열을가변크기로다룰수있게하는컨테이너 배열의길이제한극복 요소의개수가넘치면자동으로길이조절 요소객체들을삽입, 삭제, 검색하는컨테이너 삽입, 삭제에따라자동으로요소의위치조정 Vector 에삽입가능한것 객체, null 기본타입의값은 Wrapper 객체로만들어저장 Vector 에객체삽입 벡터의맨뒤, 중간에객체삽입가능 Vector 에서객체삭제 임의의위치에있는객체삭제가능

Vector<Integer> 벡터컬렉션내부 10 Vector<Integer> v = new Vector<Integer>(); add() 를이용하여요소를삽입하고 get() 을이용하여요소를검색합니다

타입매개변수사용하지않는경우경고발생 11 Vector 로만사용하면경고발생 Vector<Integer> 나 Vector<String> 등타입매개변수를사용하여야함

12 Vector<E> 클래스의주요메소드

Vector<Integer> 컬렉션활용사례 13

Vector<Integer> 컬렉션활용사례 ( 계속 ) 14

컬렉션과자동박싱 / 언박싱 15 JDK 1.5 이전 기본타입데이터를 Wrapper 객체로만들어삽입 Vector<Integer> v = new Vector<Integer>(); v.add(new Integer(4)); 컬렉션으로부터요소를얻어올때, Wrapper 클래스로캐스팅필요 Integer n = (Integer)v.get(0); int k = n.intvalue(); // k = 4 JDK 1.5 부터 자동박싱 / 언박싱이작동하여기본타입값삽입가능 Vector<Integer> v = new Vector<Integer> (); v.add(4); // 4 new Integer(4) 로자동박싱 int k = v.get(0); // Integer 타입이 int 타입으로자동언박싱, k = 4 그러나, 타입매개변수를기본타입으로구체화할수는없음 Vector<int> v = new Vector<int> (); // 컴파일오류

예제 7-1 : 정수만다루는 Vector<Integer> 컬렉션활용 16 정수만다루는 Vector<Integer> 제네릭벡터를생성하고활용하는사례를보인다. 다음코드에대한결과는무엇인가? import java.util.vector; public class VectorEx { public static void main(string[] args) { // 정수값만다루는제네릭벡터생성 Vector<Integer> v = new Vector<Integer>(); v.add(5); // 5 삽입 v.add(4); // 4 삽입 v.add(-1); // -1 삽입 // 벡터속의모든정수더하기 int sum = 0; for(int i=0; i<v.size(); i++) { int n = v.elementat(i); // 벡터의 i 번째정수 sum += n; System.out.println(" 벡터에있는정수합 : " + sum); // 벡터중간에삽입하기 v.add(2, 100); // 4 와 -1 사이에정수 100 삽입 System.out.println(" 벡터내의요소객체수 : " + v.size()); System.out.println(" 벡터의현재용량 : " + v.capacity()); // 모든요소정수출력하기 for(int i=0; i<v.size(); i++) { int n = v.get(i); // 벡터의 i 번째정수 System.out.println(n); 벡터내의요소객체수 : 4 벡터의현재용량 : 10 5 4 100-1 벡터에있는정수합 : 108

예제 7-2 : Point 클래스의객체들만저장하는벡터만들기 17 점 (x, y) 를표현하는 Point 클래스의객체만다루는벡터의활용을보여라. import java.util.vector; class Point { private int x, y; public Point(int x, int y) { this.x = x; this.y = y; public class PointVectorEx { public static void main(string[] args) { Vector<Point> v = new Vector<Point>(); // 3 개의 Point 객체삽입 v.add(new Point(2, 3)); v.add(new Point(-5, 20)); v.add(new Point(30, -8)); public String tostring() { return "(" + x + "," + y + ")"; v.remove(1); // 인덱스 1 의 Point(-5, 20) 객체삭제 // 벡터에있는 Point 객체모두검색하여출력 for(int i=0; i<v.size(); i++) { Point p = v.get(i); // 벡터의 i 번째 Point 객체얻어내기 System.out.println(p); // p.tostring() 을이용하여객체 p 출력 (2,3) (30,-8)

ArrayList<E> 18 가변크기배열을구현한클래스 <E> 에요소로사용할특정타입으로구체화 벡터와거의동일 요소삽입, 삭제, 검색등벡터기능과거의동일 벡터와달리스레드동기화기능없음 다수스레드가동시에 ArrayList 에접근할때동기화되지않음. 개발자가스레드동기화코드작성 ArrayList<String> = new ArrayList<String>();

19 ArrayList<E> 클래스의주요메소드

ArrayList<String> 컬렉션활용사례 20

ArrayList<String> 컬렉션활용사례 ( 계속 ) 21

예제 7-3 : 문자열만다루는 ArrayList<String> 활용 22 이름을 4 개입력받아 ArrayList 에저장하고, ArrayList 에저장된이름을모두출력한후, 제일긴이름을출력하라. import java.util.*; public class ArrayListEx { public static void main(string[] args) { // 문자열만삽입가능한 ArrayList 컬렉션생성 ArrayList<String> a = new ArrayList<String>(); // 키보드로부터 4 개의이름입력받아 ArrayList 에삽입 Scanner scanner = new Scanner(System.in); for(int i=0; i<4; i++) { System.out.print(" 이름을입력하세요 >>"); String s = scanner.next(); // 키보드로부터이름입력 a.add(s); // ArrayList 컬렉션에삽입 // ArrayList 에들어있는모든이름출력 for(int i=0; i<a.size(); i++) { // ArrayList 의 i 번째문자열얻어오기 String name = a.get(i); System.out.print(name + " "); // 가장긴이름출력 int longestindex = 0; for(int i=1; i<a.size(); i++) { if(a.get(longestindex).length() < a.get(i).length()) longestindex = i; System.out.println("\n 가장긴이름은 : " + a.get(longestindex)); 이름을입력하세요 >>Mike 이름을입력하세요 >>Jane 이름을입력하세요 >>Ashley 이름을입력하세요 >>Helen Mike Jane Ashley Helen 가장긴이름은 : Ashley

컬렉션의순차검색을위한 Iterator 23 Iterator<E> 인터페이스 리스트구조의컬렉션에서요소의순차검색을위한인터페이스 Vector<E>, ArrayList<E>, LinkedList<E> 가상속받는인터페이스 Iterator 객체얻어내기 컬렉션의 iterator() 메소드호출 해당컬렉션을순차검색할수있는 Iterator 객체리턴컬렉션검색코드 Vector<Integer> v = new Vector<Integer>(); Iterator<Integer> it = v.iterator(); while(it.hasnext()) { // 모든요소방문 int n = it.next(); // 다음요소리턴... Vector<Integer> 객체와 Iterator 객체의관계

예제 7-4 : Iterator<Integer> 를이용하여정수벡터검색 24 예제 7-1 의코드중에서벡터검색부분을 Iterator<Integer> 를이용하여수정하라. import java.util.*; public class IteratorEx { public static void main(string[] args) { // 정수값만다루는제네릭벡터생성 Vector<Integer> v = new Vector<Integer>(); v.add(5); // 5 삽입 v.add(4); // 4 삽입 v.add(-1); // -1 삽입 v.add(2, 100); // 4 와 -1 사이에정수 100 삽입 // Iterator 를이용하여모든정수더하기 int sum = 0; it = v.iterator(); // Iterator 객체얻기 while(it.hasnext()) { int n = it.next(); sum += n; System.out.println(" 벡터에있는정수합 : " + sum); // Iterator 를이용한모든정수출력하기 Iterator<Integer> it = v.iterator(); // Iterator 객체얻기 while(it.hasnext()) { int n = it.next(); System.out.println(n); 5 4 100-1 벡터에있는정수합 : 108

HashMap<K,V> 25 키 (key) 와값 (value) 의쌍으로구성되는요소를다루는컬렉션 K : 키로사용할요소의타입 V : 값으로사용할요소의타입 키와값이한쌍으로삽입 값 을검색하기위해서는반드시 키 이용 삽입및검색이빠른특징 요소삽입 : put() 메소드 요소검색 : get() 메소드 예 ) HashMap<String, String> 생성, 요소삽입, 요소검색 HashMap<String, String> h = new HashMap<String, String>(); // 해시맵객체생성 h.put("apple", " 사과 "); // "apple" 키와 " 사과 " 값의쌍을해시맵에삽입 String kor = h.get("apple"); // "apple" 키로값검색. kor 는 " 사과

HashMap<String, String> 의내부구성 26 HashMap<String, String> map = new HashMap<String, String>();

27 HashMap<K,V> 의주요메소드

HashMap<String, String> 컬렉션활용사례 28

29 예제 7-5 : HashMap<String, String> 로 ( 영어, 한글 ) 단어쌍을저장하고검색하기 영어단어와한글단어의쌍을 HashMap 에저장하고, 영어단어로한글단어를검색하는프로그램을작성하라. import java.util.*; public class HashMapDicEx { public static void main(string[] args) { // 영어단어와한글단어의쌍을저장하는 HashMap 컬렉션생성 HashMap<String, String> dic = new HashMap<String, String>(); // 3 개의 (key, value) 쌍을 dic 에저장 dic.put("baby", " 아기 "); // "baby" 는 key, " 아기 " 은 value dic.put("love", " 사랑 "); dic.put("apple", " 사과 "); // dic 해시맵에들어있는모든 (key, value) 쌍출력 Set<String> keys = dic.keyset(); // 모든키를 Set 컬렉션에받아옴 Iterator<String> it = keys.iterator(); // Set 에접근하는 Iterator 리턴 while(it.hasnext()) { String key = it.next(); // 키 String value = dic.get(key); // 값 System.out.print("(" + key + "," + value + ")"); System.out.println(); // 영어단어를입력받고한글단어검색 Scanner scanner = new Scanner(System.in); for(int i=0; i<3; i++) { System.out.print(" 찾고싶은단어는?"); String eng = scanner.next(); // 해시맵에서 ' 키 ' eng 의 ' 값 ' kor 검색 String kor = dic.get(eng); if(kor == null) System.out.println(eng + " 는없는단어입니다."); else System.out.println(kor); (love, 사랑 )(apple, 사과 )(baby, 아기 ) 찾고싶은단어는?apple 사과찾고싶은단어는?babo babo 는없는단어입니다. 찾고싶은단어는?love 사랑

제네릭만들기 30 제네릭클래스작성 클래스이름옆에일반화된타입매개변수추가 val 의타입은 T public class MyClass<T> { T val; void set(t a) { val = a; T get() { return val; 제네릭객체생성및활용 T 타입의값 a 를 val 에지정 T 타입의값 val 리턴 제네릭클래스 MyClass 선언, 타입매개변수 T 제네릭타입에구체적인타입을지정하여객체를생성하는것을구체화라고함 MyClass<String> s = new MyClass<String>(); // T 를 String 으로구체화 s.set("hello"); System.out.println(s.get()); // "hello" 출력 MyClass<Integer> n = new MyClass<Integer>(); // T 를 Integer 로구체화 n.set(5); System.out.println(n.get()); // 숫자 5 출력

예제 7-6 : 제네릭스택만들기 31 스택을제네릭클래스로작성하고, String 과 Integer 형스택을사용하는예를보여라. class GStack<T> { int tos; Object [] stck; public GStack() { tos = 0; stck = new Object [10]; public void push(t item) { if(tos == 10) return; stck[tos] = item; tos++; public T pop() { if(tos == 0) return null; tos--; return (T)stck[tos]; public class MyStack { public static void main(string[] args) { GStack<String> stringstack = new GStack<String>(); stringstack.push("seoul"); stringstack.push("busan"); stringstack.push("la"); for(int n=0; n<3; n++) System.out.println(stringStack.pop()); GStack<Integer> intstack = new GStack<Integer>(); intstack.push(1); intstack.push(3); intstack.push(5); for(int n=0; n<3; n++) System.out.println(intStack.pop()); LA busan seoul 5 3 1