nme.kr

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
프로그램:java:ㄴhomework:book_source:ch13 [2022/01/04 11:18]
clayeryan@gmail.com 만듦
프로그램:java:ㄴhomework:book_source:ch13 [2023/07/13 17:29] (현재)
clayeryan@gmail.com ↷ 문서가 programmer:java:ㄴhomework:book_source:ch13에서 프로그램:java:ㄴhomework:book_source:ch13(으)로 이동되었습니다
줄 1: 줄 1:
-====== Chapter13 컬렉션프레임워크 ======+====== Ch.13 컬렉션프레임워크 ======
  
 +===== 컬렉션 프레임워크 개요 =====
 +
 +===== List 인터페이스 =====
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.List;
 +
 +public class ListEx {
 +
 + public static void main(String[] args) {
 +
 + List list = new ArrayList();
 + list.add(1);list.add(2);
 + list.add(3);list.add(4);
 + list.add(5);list.add(6);
 + System.out.println(list);
 +
 + for(int i=0;i<list. size();i++) {
 + System.out.println(i+":"+ list.get(i));
 + }
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.Vector;
 +
 +public class ListEx2 {
 +
 + public static void main(String[] args) {
 +
 + Vector list = new Vector();
 + list.add(1.2); // List 메서드
 + list.add(Math.PI); // List 메서드
 + list.addElement(3.4); // 이전 메서드
 +
 + // 향상된 for문
 + for (Object o : list) {
 + System.out.println(o);
 + }
 + double num = 3.4;
 +
 + // 해당 요소의 인덱스 (없으면 -1)
 + int index = list.indexOf(num);
 + if (index >= 0) { // 요소가 존재함
 + System.out.println(num + " 의 위치 :" + index);
 + } else { // 존재하지 않음
 + System.out.println(num + " 는 list 에 없습니다");
 + }
 +
 + num = 1.2;
 + // 값이 존재하는지 확인
 + if (list.contains(num)) {
 + // 제거(이전 메서드)
 + list.removeElement(num);
 + System.out.println(num + " 삭제됨");
 + }
 +
 + // 해당 요소의 인덱스 (없으면 -1)
 + System.out.println(list.indexOf(num));
 + System.out.println(list); // toString()
 +
 + }
 +
 +}
 +
 +</code>
 +
 +**Shape.java**
 +<code java>
 +
 +abstract class Shape {
 +
 + // 필드
 + int x, y;
 +
 + // 생성자
 + Shape() {
 + this(0, 0);
 + }
 + Shape(int x, int y) {
 + this.x = x;
 + this.y = y;
 + }
 +
 + // 추상메서드
 + abstract double area();
 + abstract double length();
 +
 + // 일반 메서드
 + public String getLocation() {
 + return "x:" + x + ",y:" + y;
 + }
 +
 +}
 +
 +</code>
 +
 +**Circle.java**
 +<code java>
 +package chapter13;
 +
 +public class Circle extends Shape {
 +
 + // 필드
 + double r;
 +
 + // 생성자
 + Circle() {
 + this(1);
 + }
 + Circle(double r) {
 + this.r = r;
 + }
 +
 + // 메서드 재정의(오버라이딩)
 + @Override
 + double area() {
 + return (r * r) * Math.PI;
 + }
 +
 + @Override
 + double length() {
 + return (r * 2) * Math.PI;
 + }
 +
 +}
 +
 +</code>
 +
 +**Rectangle.java**
 +<code java>
 +package chapter13;
 +
 +public class Rectangle extends Shape {
 +
 + // 필드
 + int w,h;
 +
 + // 생성자
 + Rectangle() {
 + this(1,1);
 + }
 + Rectangle(int w, int h) {
 + this.w = w;
 + this.h = h;
 + }
 +
 + // 메서드 재정의(오버라이딩)
 + @Override
 + double area() {
 + return (w * h);
 + }
 +
 + @Override
 + double length() {
 + return (w + h) * 2;
 + }
 +
 +}
 +
 +</code>
 +
 +**ListEx3.java**
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.List;
 +
 +public class ListEx3 {
 +
 + public static void main(String[] args) {
 +
 + List list = new ArrayList();
 + // list 객체에 요소 추가
 + list.add(new Circle(3.0));
 + list.add(new Rectangle(3, 4));
 + list.add(new Circle(5));
 + list.add(new Rectangle(5,6));
 +
 + System.out.println(" 전체 도형의 면적의 합 :" + sumArea(list));
 + System.out.println(" 전체 도형의 둘레의 합 :" + sumLength(list));
 +
 + }
 +
 + private static double sumLength(List list) {
 + double sumlength = 0;
 +
 + for (int i=0; i<list.size(); i++) {
 + // list 객체 형변환
 + Shape s = (Shape)list.get(i);
 + sumlength += s.length();
 + }
 + return sumlength;
 + }
 +
 + private static double sumArea(List list) {
 + double sumarea = 0;
 +
 + for (int i = 0; i < list.size(); i++) {
 + // list 객체 형변환과 메서드 호출 동시에
 + sumarea += ((Shape)list.get(i)).area();
 + }
 + return sumarea;
 + }
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.LinkedList;
 +
 +public class ArrayListCompareLinkedList {
 +
 + public static void main(String[] args) {
 +
 + ArrayList alist = new ArrayList();
 + LinkedList llist = new LinkedList();
 +
 + for (int i=0; i<100000; i++) {
 + alist.add(i);
 + llist.add(i);
 + }
 +
 + System.out.println("ArrayList Access");
 + long start = System.currentTimeMillis();
 + for (int i=0; i<alist.size(); i++) {
 + alist.get(i);
 + }
 + long end = System.currentTimeMillis();
 + System.out.println(end-start);
 +
 + System.out.println("LinkedList Access");
 + start = System.currentTimeMillis();
 + for (int i=0; i<llist.size(); i++) {
 + llist.get(i);
 + }
 + end = System.currentTimeMillis();
 + System.out.println(end-start);
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.LinkedList;
 +
 +public class ArrayListCompareLinkedList2 {
 +
 + public static void main(String[] args) {
 +
 + ArrayList alist = new ArrayList();
 + LinkedList llist = new LinkedList();
 +
 + for (int i=0; i<100000; i++) {
 + alist.add(i);
 + llist.add(i);
 + }
 +
 + System.out.println("ArrayList 추가");
 + long start = System.currentTimeMillis();
 + for (int i=0; i<10000; i++) {
 + alist.add(500, "i");
 + }
 + long end = System.currentTimeMillis();
 + System.out.println(end-start);
 +
 + System.out.println("LinkedList 추가");
 + start = System.currentTimeMillis();
 + for (int i=0; i<10000; i++) {
 + llist.add(500, i+"");
 + }
 + end = System.currentTimeMillis();
 + System.out.println(end-start);
 +
 + }
 +
 +}
 +</code>
 +===== Set 인터페이스 =====
 +:wr:<color #ff7f27>**HashSet**</color>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.HashSet;
 +import java.util.Set;
 +
 +public class HashSetEx {
 +
 + public static void main(String[] args) {
 +
 + // Object타입의 배열 생성
 + Object[] arr = {"홍길동","이순신","홍길동","이순신",1,2,"1","2"};
 +
 + // HashSet 객체 생성
 + Set set = new HashSet();
 +
 + // set객체에 배열의 모든 요소 add
 + for(int i=0;i < arr.length;i++) {
 + set.add(arr[i]);
 + }
 +
 + // 출력
 + System.out.println(set);
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.HashSet;
 +import java.util.Set;
 +
 +public class HashSetEx2 {
 +
 + public static void main(String[] args) {
 +
 + // HashSet 객체 생성
 + Set set = new HashSet();
 +
 + // 문자열 객체 두개 추가
 + set.add(new String("abc"));
 + set.add(new String("abc"));
 +
 + // Member 객체 두개 추가(사용자 정의 클래스)
 + set.add(new Member("홍길동 ", 40));
 + set.add(new Member("고길동 ", 40));
 +
 + // 출력
 + System.out.println(set);
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +public class Member {
 +
 + // 필드
 + String name;
 + int age;
 +
 + // 생성자
 + Member (String name, int age) {
 + this.name = name;
 + this.age = age;
 + }
 +
 + // toSring() 메서드 재정의
 + @Override
 + public String toString() {
 + return "("+ name + "," + age + ")";
 + }
 +
 + // equals() 메서드 재정의
 + @Override
 + public boolean equals(Object obj) {
 + if(obj instanceof Member) {
 + Member m = (Member)obj;
 + return this.name.equals(m.name) && this.age == m.age;
 + } else {
 + return false;
 + }
 + }
 +
 + // hashCode() 메서드 재정의
 + @Override
 + public int hashCode() {
 + return this.name.hashCode() + age;
 + }
 +}
 +
 +</code>
 +
 +:wr:<color #ff7f27>**TreeSet**</color>
 +
 +**Descend.java**
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.Comparator;
 +
 +public class Descend implements Comparator {
 +
 + @Override
 + public int compare(Object o1, Object o2) {
 + Comparable c1 = (Comparable)o1;
 + Comparable c2 = (Comparable)o2;
 + return c1.compareTo(c2) * (-1);
 + }
 +
 +}
 +</code>
 +
 +**TreeSetEx.java**
 +<code java>
 +package chapter13;
 +
 +import java.util.SortedSet;
 +import java.util.TreeSet;
 +
 +public class TreeSetEx {
 +
 + public static void main(String[] args) {
 +
 + SortedSet set = new TreeSet();
 + String from = "bat";
 + String to = "d";
 +
 + // set객체에 추가
 + set.add("ant");set.add("alias");
 + set.add("batman");set.add("aha");
 + set.add("cola");set.add("Cola");
 + set.add("ddr");set.add("dance");
 + set.add("dEEE");set.add("deee");
 + set.add("ever"); set.add("giant");
 + set.add("zoo");
 +
 + // 출력
 + System.out.println(set);
 + System.out.println("from:"+from+",to:"+to);
 + // from~to 검색
 + System.out.println(set.subSet(from, to));
 + System.out.println("from:"+from+",to:"+to+"zzzz");
 + // from~to+"zzzz" 검색
 + System.out.println(set.subSet(from,to+"zzzz"));
 +
 + // 내림차순 정렬
 + set = new TreeSet(new Descend());
 + set.add("ant");set.add("alias");
 + set.add("batman");set.add("aha");
 + set.add("cola");set.add("Cola");
 + set.add("ddr");set.add("dance");
 + set.add("dEEE");set.add("deee");
 + set.add("ever"); set.add("giant");
 + set.add("zoo");
 +
 + System.out.println(set);
 + System.out.println("from:"+from+",to:"+to);
 +
 + // to~from (반대로 검색)
 + System.out.println(set.subSet(to, from));
 +
 + }
 +
 +}
 +
 +</code>
 +
 +**Member2.java**
 +<code java>
 +package chapter13;
 +
 +public class Member {
 +
 + // 필드
 + String name;
 + int age;
 +
 + // 생성자
 + Member (String name, int age) {
 + this.name = name;
 + this.age = age;
 + }
 +
 + // toSring() 메서드 재정의
 + @Override
 + public String toString() {
 + return "("+ name + "," + age + ")";
 + }
 +
 + // equals() 메서드 재정의
 + @Override
 + public boolean equals(Object obj) {
 + if(obj instanceof Member) {
 + Member m = (Member)obj;
 + return this.name.equals(m.name) && this.age == m.age;
 + } else {
 + return false;
 + }
 + }
 +
 + // hashCode() 메서드 재정의
 + @Override
 + public int hashCode() {
 + return this.name.hashCode() + age;
 + }
 +}
 +
 +</code>
 +
 +**AgeDesc.java**
 +<code java>
 +package chapter13;
 +
 +import java.util.Comparator;
 +
 +public class AgeDesc implements Comparator {
 +
 + @Override
 + public int compare(Object o1, Object o2) {
 + // Member2로 형변환
 + Member2 m1 = (Member2)o1;
 + Member2 m2 = (Member2)o2;
 +
 + // 나이로 내림차순 정렬
 + return m2.age - m1.age;
 + }
 +
 +}
 +
 +</code>
 +
 +**NameDesc.java**
 +<code java>
 +package chapter13;
 +
 +import java.util.Comparator;
 +
 +public class NameDesc implements Comparator {
 +
 + @Override
 + public int compare(Object o1, Object o2) {
 + // Member2로 형변환
 + Member2 m1 = (Member2)o1;
 + Member2 m2 = (Member2)o2;
 +
 + // 이름으로 내림차순 정렬
 + return m1.compareTo(m2) * (-1);
 + }
 +
 +}
 +
 +</code>
 +
 +**TreeSetEx2.java**
 +<code java>
 +package chapter13;
 +
 +import java.util.Comparator;
 +import java.util.TreeSet;
 +
 +public class TreeSetEx2 {
 +
 + public static void main(String[] args) {
 +
 + // 이름순으로 정렬
 + TreeSet set = new TreeSet();
 +
 + set.add(new Member2("홍길동 ",30));
 + set.add(new Member2("이순신 ",40));
 + set.add(new Member2("김유신 ",50));
 + System.out.println(set);
 +
 + // 나이 오름차순으로 정렬하여 출력 (익명 클래스로 인터페이스 구현)
 + TreeSet set2 = new TreeSet(new Comparator(){
 +
 + @Override
 + public int compare(Object o1, Object o2) {
 + Member2 m1 = (Member2)o1;
 + Member2 m2 = (Member2)o2;
 + return m1.age - m2.age;
 + }
 + });
 +
 + set2.add(new Member2("홍길동 ",30));
 + set2.add(new Member2("이순신 ",40));
 + set2.add(new Member2("김유신 ",50));
 + System.out.println(set2);
 +
 + // 이름의 내림차순으로 정렬하여 출력
 + TreeSet set3 = new TreeSet(new NameDesc());
 + set3.add(new Member2("홍길동 ",30));
 + set3.add(new Member2("이순신 ",40));
 + set3.add(new Member2("김유신 ",50));
 + System.out.println(set3);
 +
 + // 나이의 내림차순으로 정렬하여 출력
 + TreeSet set4 = new TreeSet(new AgeDesc());
 + set4.add(new Member2("홍길동 ",30));
 + set4.add(new Member2("이순신 ",40));
 + set4.add(new Member2("김유신 ",50));
 + System.out.println(set4);
 +
 + }
 +
 +}
 +
 +</code>
 +===== Iterator와 Enumeration =====
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.HashSet;
 +import java.util.Iterator;
 +import java.util.List;
 +import java.util.Set;
 +
 +public class IteratorEx {
 +
 + public static void main(String[] args) {
 +
 + // Iterator 객체 선언
 + Iterator it = null;
 +
 + // List 객체와 Set 객체 생성
 + List list = new ArrayList();
 + Set set = new HashSet();
 +
 + // list와 set에 5개의 값 추가
 + for(int i=1; i<=5;i++) {
 + list.add(i);
 + set.add(i+5);
 + }
 +
 + // 출력
 + System.out.println(list);
 + System.out.println(set);
 +
 + // list에서 Iterator 객체로 생성
 + it = list.iterator();
 +
 + // lit의 Iterator 객체 출력
 + System.out.println("List Iterator 출력");
 + iteratorPrint(it);
 +
 + // set에서 Iterator 객체로 생성
 + it = set.iterator();
 +
 + // set의 Iterator 객체 출력
 + System.out.println("Set Iterator 출력");
 + iteratorPrint(it);
 +
 + // 출력
 + System.out.println(list);
 + System.out.println(set);
 +
 + }
 +
 + private static void iteratorPrint(Iterator it) {
 + // Iterator 객체 반복 (다음 요소가 있으면 반복)
 + while(it.hasNext()) {
 + // Iterator 객체의 다음 요소 읽어와 출력
 + System.out.println(it.next());
 + // 현재 요소 삭제
 + it.remove();
 + }
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.Enumeration;
 +import java.util.Iterator;
 +import java.util.Vector;
 +
 +public class EnumerationEx {
 +
 + public static void main(String[] args) {
 +
 + Vector v = new Vector();
 + for(int i=1; i<= 5;i++) {
 + v.add(i);
 + }
 +
 + // Enumeration 으로 출력
 + Enumeration e = v.elements();
 + System.out.println("Enumeration 출력");
 + while(e.hasMoreElements()) {
 + System.out.println(e.nextElement());
 + }
 +
 + // Iterator로 출력
 + Iterator it = v.iterator();
 + System.out.println("Iterator 출력");
 + while(it.hasNext()) {
 + System.out.println(it.next());
 + }
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.Enumeration;
 +import java.util.Iterator;
 +
 +public class IterVSsize {
 +
 + public static void main(String[] args) {
 +
 + ArrayList list = new ArrayList();
 +
 + for (int i=0; i<100000000; i++) {
 + list.add(i);
 + }
 +
 + // Iterator 실행 시간
 + long start = System.currentTimeMillis();
 + Iterator it = list.iterator();
 + while (it.hasNext()) {
 + it.next();
 + }
 + long end = System.currentTimeMillis();
 + System.out.println("Iterator 소요 시간 : "+(end-start));
 +
 + // size 실행 시간
 + start = System.currentTimeMillis();
 + for (int i=0; i<list.size(); i++) {
 + list.get(i);
 + }
 + end = System.currentTimeMillis();
 + System.out.println("size() 소요 시간 : "+(end-start));
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.ArrayList;
 +import java.util.List;
 +import java.util.ListIterator;
 +
 +public class ListIteratorEx {
 +
 + public static void main(String[] args) {
 +
 + // 리스트 객체 생성
 + List list = new ArrayList();
 + // 리스트 객체에 값 추가
 + for(int i=1;i<=5;i++) {
 + list.add(i);
 + }
 + // ListIterator 객체 생성
 + ListIterator lit = list.listIterator();
 + // 다음 요소 반복 출력
 + while(lit.hasNext()) {
 + System.out.println(lit.next());
 + }
 + // 이전 요소 반복 출력
 + while(lit.hasPrevious()) {
 + System.out.println(lit.previous());
 + }
 +
 + }
 +
 +}
 +
 +</code>
 +
 +===== Map 인터페이스 =====
 +
 +:wr:<color #ff7f27>**HashMap**</color>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.HashMap;
 +import java.util.Map;
 +
 +public class HashMapEx {
 +
 + public static void main(String[] args) {
 +
 + // Map 객체 생성
 + Map map =new HashMap();
 +
 + // 이름이 담긴 문자열 배열 생성
 + String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
 + // 숫자가 담긴 정수 배열 생성
 + int[] nums = {1234,4567,2350,9870,2345};
 +
 + // Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
 + for(int i=0;i<names.length;i++) {
 + map.put(names[i], nums[i]);
 + }
 +
 + // 출력
 + System.out.println(map);
 + System.out.println("홍길동 번호 :" + map.get("홍길동"));
 + System.out.println("이순신 번호 :" + map.get("이순신"));
 + System.out.println("김유신 번호 :" + map.get("김유신"));
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.HashMap;
 +import java.util.Iterator;
 +import java.util.Map;
 +import java.util.Set;
 +
 +public class HashMapEx2 {
 +
 + public static void main(String[] args) {
 +
 + // Map 객체 생성
 + Map map =new HashMap();
 +
 + // 이름이 담긴 문자열 배열 생성
 + String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
 + // 숫자가 담긴 정수 배열 생성
 + int[] nums = {1234,4567,2350,9870,2345};
 +
 + // Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
 + for(int i=0;i<names.length;i++) {
 + map.put(names[i], nums[i]);
 + }
 +
 + //Map 객체에서 key 들만 조회하기
 + Set<String> keys = map.keySet();
 + for(String key : keys) {
 + System.out.println(key + "=" + map.get(key));
 + }
 + System.out.println("Iterator로 출력");
 + Iterator it = keys.iterator();
 + while(it.hasNext()) {
 + String a = (String)it.next();
 + System.out.println(a+"="+map.get(a));
 + }
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.Collection;
 +import java.util.HashMap;
 +import java.util.Iterator;
 +import java.util.Map;
 +
 +public class HashMapEx3 {
 +
 + public static void main(String[] args) {
 +
 + // Map 객체 생성
 + Map map =new HashMap();
 +
 + // 이름이 담긴 문자열 배열 생성
 + String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
 + // 숫자가 담긴 정수 배열 생성
 + int[] nums = {1234,4567,2350,9870,2345};
 +
 + // Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
 + for(int i=0;i<names.length;i++) {
 + map.put(names[i], nums[i]);
 + }
 +
 + //Map 객체에서 value 들만 조회하기
 + Collection values = map.values();
 +
 + // 향상된 for문으로 출력
 + for(Object i : values) {
 + System.out.println(i);
 + }
 +
 + // Iterator 객체로 출력
 + Iterator it = values.iterator();
 + while(it.hasNext()) {
 + System.out.println(it.next());
 + }
 +
 + }
 +
 +}
 +
 +</code>
 +
 +<code java>
 +package chapter13;
 +
 +import java.util.HashMap;
 +import java.util.Map;
 +import java.util.Set;
 +
 +public class HashMapEx4 {
 +
 + public static void main(String[] args) {
 +
 + // Map 객체 생성
 + Map map =new HashMap();
 +
 + // 이름이 담긴 문자열 배열 생성
 + String[] names = {"홍길동", "김유신", "이순신", "강감찬", "김유신"};
 + // 숫자가 담긴 정수 배열 생성
 + int[] nums = {1234,4567,2350,9870,2345};
 +
 + // Map 객체에 두 배열의 값들을 키와 밸류 쌍으로 저장
 + for(int i=0;i<names.length;i++) {
 + map.put(names[i], nums[i]);
 + }
 +
 + // Map 객체는 (키,값) 쌍으로 이루어진 객체들의 모임
 + // (키, 값) 쌍으로  조회하기
 + Set entry = map.entrySet();
 + for(Object o : entry) {
 + Map.Entry m = (Map.Entry)o;
 + System.out.println("key:"+m.getKey() + ", value:" + m.getValue());
 + }
 +
 + }
 +
 +}
 +
 +</code>
 +
 +:wr:<color #ff7f27>**Properties**</color>
 +
 +<code java>
 +package chapter13;
 +
 +import java.io.FileInputStream;
 +import java.io.FileOutputStream;
 +import java.io.IOException;
 +import java.util.Properties;
 +
 +
 +
 +public class PropertiesEx {
 +
 + public static void main(String[] args) {
 +
 + try {
 + Properties pr = new Properties();
 +
 + // properties 파일 읽어오기
 + FileInputStream reader = new FileInputStream(
 + "C:/java/workspace/test/src/chapter13"
 + + "/config.properties");
 + // Properties 객체에 로드
 + pr.load(reader);
 + System.out.println(pr);
 + System.out.println(" 이름 :" + pr.get("name"));
 +
 + // property에 키,값으로 추가
 + pr.put("subject", " 자바");
 + System.out.println(pr);
 +
 + // properties 파일로 출력
 + pr.store(new FileOutputStream(
 + "C:/java/workspace/test/src/chapter13/"
 + + "test.properties"), "#save");
 + } catch (IOException e) {
 + System.out.println(e.getMessage());
 + }
 +
 + }
 +
 +}
 +
 +</code>