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

Similar documents
PowerPoint 프레젠테이션

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

PowerPoint Presentation

슬라이드 1

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

Microsoft PowerPoint - Java7.pptx

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

PowerPoint Presentation

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

PowerPoint 프레젠테이션

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint Presentation

Java ...

PowerPoint 프레젠테이션

PowerPoint Presentation

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - 04-UDP Programming.ppt

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

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

JAVA PROGRAMMING 실습 09. 예외처리

TEST BANK & SOLUTION

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

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

untitled

Microsoft PowerPoint - Lect04.pptx

Design Issues

PowerPoint 프레젠테이션

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - Lect07.pptx

90 Java의정석定石 3판 - 연습문제풀이 Chapter 컬렉션프레임웍 Collections Framework

본 강의에 들어가기 전

비긴쿡-자바 00앞부속

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

PowerPoint Presentation

PowerPoint Presentation

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

교육자료

PowerPoint 프레젠테이션

09-interface.key

C 언어 프로그래밊 과제 풀이

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

Java

12-file.key

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint Presentation

Microsoft PowerPoint - 2강

제11장 프로세스와 쓰레드

adfasdfasfdasfasfadf

PowerPoint Presentation

Microsoft PowerPoint - CSharp-2-기초문법

4장.문장

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

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

Microsoft Word - EEL2 Lab4.docx

자바-11장N'1-502

PowerPoint Presentation

쉽게

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint 프레젠테이션

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 08.다형성

Microsoft Word - java18-1-final-answer.doc

02 C h a p t e r Java

chap 5: Trees

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

JAVA PROGRAMMING 실습 02. 표준 입출력

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

Cluster management software

PowerPoint Presentation

gnu-lee-oop-kor-lec10-1-chap10

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

[ 프로젝트이름 ] : Project_Car [ 프로젝트를만든목적 ] : 임의의자동차판매소가있다고가정하고, 고객이원하는자동차의각부분을 Java 를이용하여객 체로생성하고, 그것을제어하는메소드를이용하여자동차객체를생성하는것이목표이다. [ 프로젝트패키지와클래스의내용설명 ] [

쉽게 풀어쓴 C 프로그래밍

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

PowerPoint 프레젠테이션

슬라이드 1

쉽게 풀어쓴 C 프로그래밊

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

12-file.key

rmi_박준용_final.PDF

PowerPoint Template

강의 개요

쉽게 풀어쓴 C 프로그래밍

C++ Programming

05-class.key

자바 프로그래밍

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft PowerPoint - chap06-1Array.ppt

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

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

Transcription:

무엇이든다받아주는클래스 2 컬렉션프레임워크에저장된데이터를순차적으로처리하는방법 : Iterator 객체사용 - get() 메서드를사용하면 Iterator 를사용하지않아도원하는위치의데이터를찾을수있다. - get() 메서드는원하는데이터를찾는작업을항상처음데이터부터시작한다. - Iterator 는주소를사용해서현재탐색한위치부터새로운탐색을시작하므로, 위의 get() 메서드보다훨씬처리시 간이줄어드는장점이있다. - Iterator 는마지막탐색한위치에서부터새로운탐색을시작한다. - 위의그림에서처럼순차적으로컬렉션프레임워크에저장된데이터를처리할때는 Iterator 를사용하는것이작업 처리의소요시간면에서많은이점이있다.

항상쌍 ( 키, 값 ) 으로만데이터를저장하는클래스 의최고조상 : Map - Map을조상으로하는클래스, HashTable, HashMap, LinkedHashMap, TreeMap 등은데이터를저장할때반드시 키 와 값 의쌍으로저장한다. - Map에저장되는 키 는중복되면안되지만, 값 은중복되어도무관하다. - Map에중복된 키 가저장되면, 기존에저장된 키 와 값 은없어지고최근에저장한 키 와 값 이저장된다. HashMap hm = new HashMap(); hm.put(" 하하 ", " 호호 "); hm.put(" 하하 ", " 껄껄 "); 위와같이저장한경우, 하하 라는키는동일하지만가장마지막에 하하 라는키로저장한 껄껄 만저장된다. - Map에도제네릭을사용할수있다. 키 의자료형이 String이고 값 의자료형이 Integer인경우 HashMap<Striing, Integer> hashmap = new HashMap<String, Integer>(); - 다음은 HashMap을사용해서각학생의 이름 과 취미 를저장한예 import java.util.*; public class MapTest1 { public static void main(string[] args) { HashMap<String, String> hobby = new HashMap<String, String>(); hobby.put(" 홍길동 ", " 낚시 "); hobby.put(" 김길동 ", " 곤충관찰하기 "); hobby.put(" 최길순 ", " 머리핀모으기 "); hobby.put(" 홍길동 ", " 축구 "); // 이미 " 홍길동 " 이라는키로 " 낚시 " 가저장됬지만, 다시 " 홍길동 " 을키로 " 축구 " 가사용되었으므로, //" 홍길동 " 이라는키에는 " 축구 " 만저장된다. System.out.println(hobby); - Map에저장되어있는값을찾기위해서는 get( 키 ) 메서드를이용해서찾을수있다. String value = hobby.get(" 홍길동 ");//" 홍길동 " 의취미를찾아서 value에저장한다. //" 홍길동 " 의취미는 " 축구 " 이므로화면에 " 축구 " 가출력된다. - Map에서사용하는주요메서드들 clear() : 지정된맵에저장된모든데이터를삭제한다. 사용예 ) hobby.clear(); containskey(" 홍길동 ") : 지정된키 (" 홍길동 ") 가맵에있는지알려준다. 있으면 "true", 없으면 "false". containsvalue(" 축구 ") : 지정된값 (" 축구 ") 이맵에있는지알려준다. 있으면 "true", 없으면 "false". isempty() : 맵이비어있는지를알려준다. 있으면 "true", 없으면 "false". 도전과제1 - 모두 5명의학생이름과국어점수를맵에저장하고, 화면에서학생이름을입력하면입력한학생의국어점수가출력되는프로그램을설계하세요. 출력결과의예 ) 학생이름을입력하세요. 홍길동학생의국어점수는 : 90

도전과제2 - 모두 5명의학생이름과전화번호를맵에저장하고, 화면에서학생이름을입력하면입력한학생의전화번호가출력되는프로그램을설계하세요. 출력결과의예 ) 학생이름을입력하세요. 홍길동학생의전화번호는 : 010-7643-8926 맵의활용 - 맵을이용해서사용자계정 ( 중복되지않는값 ) 과사용자암호를검사하는예 import java.util.*; public class Idcheck { public static void main(string[] args) { HashMap userids = new HashMap(); userids.put("tiger", "1212");// 사용자계정과암호를저장한다. userids.put("lion", "1122"); userids.put("dragon", "1234"); Scanner scan = new Scanner(System.in); while(true) { System.out.println(" 사용자계정과암호를입력하세요."); System.out.print(" 사용자계정 : "); String id = scan.nextline();// 화면에서계정을입력받아서 id에저장한다. System.out.print(" 암호 : "); String password = scan.nextline();// 화면에서암호를입력받아 password에저장한다. System.out.println(); if(!userids.containskey(id)) {// 사용자계정이없으면, System.out.println(" 입력하신계정이없습니다."); continue;// 반복계속 else { String value = (String)userids.get(id);// 사용자계정의암호를찾는다. if(!value.equals(password)) {// 암호가일치하지않으면, System.out.println(" 암호가일치하지않습니다."); else { System.out.println(" 사용자계정과암호가모두일치합니다!"); break;// 반복종료

맵의활용 - 맵에저장되어있는모든데이터들의순차처리도다른컬렉션프레임워크와마찬가지로 Iterator 객체를이용한다. - 하지만, 맵은다른컬렉션프레임워크와는다르게 키 와 값 의쌍으로데이터를가지고있으므로맵에서직접 Iterator를얻을수는없다. 즉, 맵에는 Iterator를생성하는 iterator() 메서드가존재하지않는다. 즉, HashTable ht = new HashTable(); Iterator it = ht.iterator();// 이렇게할수없다. - 맵에서 Iterator를사용하는방법 1 맵에서 Iterator를생성할수없으므로, Iterator를생성할수있는다른컬렉션프레임워크로변경한다. 맵에서 키 는중복된값을가질수없으므로, Set 형태의컬렉션프레임워크로변경한다. Map을 Set으로변경하는작업은 entryset() 메서드를사용한다. entryset() 메서드는 Set 내에 Map을저장한형태의 Set으로변경한다. HashMap hm = new HashMap(); hm.put( 어쩌구, 100); hm.put( 저쩌구, 200); hm.put( 그쩌구, 300); Set set = hm.entryset(); // 이메서드에의해서위그림처럼 Map에서 Set을생성한다. 2 Set으로변경되었으므로 Iterator를생성할수있다. 그런데, Iterator의대상이되는것은 Entry 이며 Entry 에는 키 와 값 이저장되어있다. Iterator it = set.iterator();// 3 위의과정에서얻은 Iterator에서 Entry를읽어서 Entry에저장되어있는 키 와 값 을각각 getkey() 메서드와 getvalue() 메서드를이용해서읽어온다. while(it.hasnext()) { Map.Entry me = (Map.Entry) it.next(); System.out.println( 키 = + me.getkey()); System.out.println( 값 = + me.getvalue());

- 맵의키와값을각각별도로순차처리하는경우 맵에서키만을별도로끄집어내어 List와 Set의부모객체인 Collection 형태로저장하고, Iterator 객체를얻어와서순차적으로처리한다. Collection colkey = hm.keyset();// 맵에서키만추출해서 colkey에저장한다. Iterator itkey = colkey.iterator(); while(itkey.hasnext()) { System.out.println(itKey.next());// 키값을화면에출력한다. 키값이문자열로바뀌어출력된다. // 이때, tostring() 메서드가자동으로호출된다. 맵에서값만을별도로끄집어내어 List와 Set의부모객체인 Collection 형태로저장하고, Iterator 객체를얻어와서순차적으로처리한다. Collection valkey = hm.values();// 맵에서값만을추출해서 valkey에저장한다. Iterator itvalue = valkey.iterator(); while(itvalue.hasnext()) { System.out.println(ktValue.next());// 키값을화면에출력한다. 키값이문자열로바뀌어출력된다. // 이때, tostring() 메서드가자동으로호출된다. - 맵에저장된데이터를순차처리한예 : 학생들의총점과평균을출력하는프로그램 import java.util.*; public class MapTest1 { public static void main(string[] args) { HashMap map = new HashMap(); map.put(" 홍길동 ", new Integer(95));// 학생이름과점수를맵에저장한다. map.put(" 김길동 ", 85); map.put(" 이길동 ", 75); Set set = map.entryset();// 맵에는 Iterator 가없으므로 Iterator 가있는 Set 을가지고온다. Iterator it = set.iterator(); while(it.hasnext()) {// 맵에저장된모든학생의이름과점수를출력한다. Map.Entry key = (Map.Entry) it.next(); System.out.println(" 이름 : " + key.getkey() + ", 점수 : " + key.getvalue()); Collection name = map.keyset();// 맵의키만별도로순차처리한다. Iterator itname = name.iterator();// 순차처리를위해 Iterator를얻어온다. while(itname.hasnext()) {// 모든학생의이름을출력한다. System.out.print(itName.next()+ " ");

System.out.println(); Collection score = map.values();// 맵의값만을별도로순차처리한다. Iterator itscore = score.iterator();// 순차처리를위해 Iterator를얻어온다. int totalscore = 0; while(itscore.hasnext()) {// 모든학생들의점수총합을구한다. totalscore = totalscore + (Integer)itScore.next(); System.out.println(" 총점 = " + totalscore); 도전과제 - 다음학생의이름과신장을맵에입력하고모든학생의이름, 신장및모든신장의합과신장의평균을구하는프 로그램을설계하세요. 이름 ( 키 ) 신장 ( 값 ) 이동욱 170.1 김치곤 178.6 김형욱 180.3 오미경 160.8 심정연 158.7 출력결과의예 ) 이름 : 이동욱신장 : 170.1 이름 : 김치곤신장 : 178.6 이름 : 김형욱신장 : 180.3 이름 : 오미경신장 : 160.8 이름 : 심정연신장 : 158.7 학생명단 : 이동욱김치곤김형욱오미경심정연신장의합 : 848.5 평균신장 : 169.7