collection

Collection 인터페이스

List 인터페이스

추가 add(Object), 가져오기 get(index)

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

    }

}

Vector 클래스

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

    }

}

ArrayList 클래스

package chapter13;

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

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

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

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

ArrayList와 LinkedList 비교 (자료구조)

읽기 성능

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

    }

}

추가 성능

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

    }

}

Set 인터페이스

package chapter13;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class LottoUseSet {

    public static void main(String[] args) {

        Random n = new Random();

        // 중복값 불가, 순서 없음
        Set lotto = new HashSet(); 
        while(true) {
            int b = n.nextInt(45)+1;
            lotto.add(b);
            if(lotto.size() == 6) break;
        }

        System.out.println(lotto);

        // 중복값 불가, 값 크기 기억 정렬됨
        Set lotto2 = new TreeSet();
        while(true) {
            int b = n.nextInt(45)+1;
            lotto2.add(b);
            if(lotto2.size() == 6) break;
        }

        System.out.println(lotto2);
    }

}

Iterator와 Enumeration 클래스

이미지참조 : http://www.taeyo.net/lecture/8_Board_taezi/lecture_03/Board_03.htm

Iterator 사용

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

}

Enumeration 사용

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

    }

}

ListIterator 인터페이스

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

    }

}

Map 인터페이스

HashMap

put(), get()
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("김유신"));

    }

}
keySet(), iterator()
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));
        }

    }

}
values(), iterator()
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());
        }

    }

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

    }

}

Properties

config.properties

name=\uD64D\uAE38\uB3D9
age=40
addr=\uC11C\uC6B8

테스트

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

    }

}