nme.kr

문서의 이전 판입니다!


Ch.13 컬렉션프레임워크

컬렉션 프레임워크 개요

List 인터페이스

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));
		}

	}

}

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()

	}

}

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 += 1).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:HashSet <code java> </code> <code java> </code> <code java> </code> :wr:TreeSet 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> </code> ===== Iterator와 Enumeration ===== <code java> </code> <code java> </code> <code java> </code> <code java> </code> ===== Map 인터페이스 ===== <code java> </code> :wr:HashMap <code java> </code> <code java> </code> <code java> </code> <code java> </code> :wr:Properties <code java> </code>

1)
Shape)list.get(i