nme.kr
Nav
Search
Edit
검색
가사
도서관
문학
사전
어학
역사
영화
클래식
프로그램
회화
html
keyboard
links
wiki
sidebar
전체 접힌 글 펴기 / 접기
문서 도구
문서 보기
이전 판
역링크
Fold/unfold all
문서 이름 바꾸기
사이트 도구
최근 바뀜
미디어 관리자
사이트맵
사용자 도구
관리
로그인
왼쪽 메뉴 편집
Plugin 관리
테마 디자인
카카오톡 링크 보내기
맨 위로
추적:
현재 위치:
index
»
프로그램
»
java
»
ㄴhomework
»
book_source
»
ch13
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 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>