..열심히 공부하세../JAVA 문법

[33] Java Collections Framework

댄스댄스 2012. 5. 8. 15:00

 

* 자바 컬렉션 프레임워크

 

  - java.util.ArrayList

  - 객체를 수집하여 저장하여 두었다가 요청이 있을시 저장소에서
    추출하여 제공하는것을 목적으로 함.

  - 배열의 단점을 개선한 클래스로 객체만 저장할 수 있다.

  - int등 각종 기본 데이터 타입을 저장하려면 Integer Wrapper Class 등으로  변환해서 사용해야 한다.

  - 배열의 크기는 변경이 불가능하나 ArrayList, Vector는 동적인 크기 변경이 가능하다.

 

 

* Collection Framework의 핵심 인터페이스

- List : 순서가 있는 데이터의 집합. 데이터의 중복을 허용
           배열기반. 순서를 유지. 중복허용
           매개변수가 중요.
           ArrayList Iterator Vector Collectors

 

- Set : 순서를 유지하지 않는 데이터의 집합
          중복허용안함.

 

- Map : key, value쌍으로 이뤄져 있음. 순서유지하지 않음.
            key 중복불가능
            value 중복가능
            우편번호,지역번호


* 다형성
- 상속을 해야지만 다형성을 이룰수 있음.
- 생성된 객체가 자식일때 성립.
- 자식타입이 부모로 갈 때는 형변환 생략 가능
- 부모타입이 자식으로 갈 때는 형변환 반드시 지정.

 

----------------------------

package oop9jcf;

class Data {
    String title="롯데시네마";
    String date="2012-05-07";
    String content="어벤저스";
}
//=======================
class Container {
    Data data = null;
   
    public void save(Data data){
        this.data = data;
    }
   
    public Data load(){
        return data;
    }
}
//======================

public class JcfEx1 {
    public static void main(String[] args) {
        Container cont=new Container();
        Data data=new Data();//롯데시네마 2012-05-07 어벤저스
        cont.save(data);
        Data dt=cont.load();//롯데시네마 2012-05-07 어벤저스
        System.out.println(dt.title);
        System.out.println(dt.date);
        System.out.println(dt.content);   
       
        //Data 객체가 10000 생성해야 한다면?
        Data dt2=new Data();//롯데시네마 2012-05-07 어벤저스

    }
}

 

 

----------------------------------

package oop9jcf;

class ContainerObj{
    Object data = null;
  
    public void save(Object data){
        this.data = data;
    }
   
    public Object load(){
        return data;
    }
}
//=================
public class JcfEx2 {
    public static void main(String[] args) {
        Data data=new Data();
        ContainerObj cont=new ContainerObj();
       
      //첫번째 경우
        cont.save(data);
      //Object타입 사용시 원래의 타입으로 형변환 필요.
        Data dt=(Data)cont.load();
        System.out.println(dt.title);
        System.out.println(dt.date);
        System.out.println(dt.content);
       
      //두번째 경우 String객체       
        cont.save("오필승코리아");
        String str=(String)cont.load();//오필승코리아
        System.out.println(str);
       
      //세번째 경우 Integer객체
        cont.save(new Integer("123"));
        Integer ii=(Integer)cont.load();
        System.out.println(ii.intValue());
       
      //123.45 jdk 1.4권장사항 아님
        cont.save(new Double("123.45"));
        Double dd=(Double)cont.load();
        System.out.println(dd.doubleValue());
       
    }

}

 

 

-------------------------------------------

package oop9jcf;

import java.util.ArrayList;

class Jumsu{
    String name="";
    int kor = 0;
    int eng = 0;
    int mat = 0;
    int aver= 0;
    public Jumsu() {}
    public Jumsu(String name, int kor, int eng, int mat) {
        this.name = name;
        this.kor = kor;
        this.eng = eng;
        this.mat = mat;
        this.aver=(kor+eng+mat)/3;
    }
   
}

//======================
public class JcfEx3 {
    public static void main(String[] args) {
        Jumsu one  =new Jumsu("무궁화",70,80,40);
        Jumsu two  =new Jumsu("진달래",40,50,30);
        Jumsu three=new Jumsu("봉선화",50,80,90);
       
        // 저장공간 선언, 메모리 자동 할당 및 증가
        ArrayList list=new ArrayList();//ctrl+shift+o
        list.add(one);
        list.add(two);
        list.add(three);
        System.out.println("list객체 요소 갯수 "+list.size());
       
        Jumsu jj=(Jumsu)list.get(2);//2번째 요소 가져옴
        System.out.println(jj.name);
        System.out.println(jj.kor);
        System.out.println(jj.eng);
        System.out.println(jj.mat);
        System.out.println(jj.aver);
       
        //반복문을 활용해서 전체 요소 출력
        int size=list.size(); //3
        int idx;
        for(idx=0; idx<size; idx++)
        {
            jj=(Jumsu)list.get(idx);
            System.out.print(jj.name+" ");
            System.out.print(jj.kor+" ");
            System.out.print(jj.eng+" ");
            System.out.print(jj.mat+" ");
            System.out.print(jj.aver+" ");
            System.out.println();
        }
    }
}

 

 

-----------------------------------------

 

package oop9jcf;
import java.util.ArrayList;
import java.util.Iterator;
//import java.util.*;

public class IterEx4 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();       
        list.add(new Integer(10));
        list.add(new Integer(20));
        list.add(new Integer(30));
        list.add(new Integer(40));
        list.add(new Integer(50));
        int idx;
        for(idx=0; idx<list.size(); idx++)
        {
            Integer ii=(Integer)list.get(idx);
            System.out.println(ii);
        }

/*       
        //Iterator형으로 변환된 형태로 반환
        Iterator iter=list.iterator();
       //가져올 요소가 있는지 검사, true false값으로 반환
       //가져올 요소가 없으면 false반환
       
        while(iter.hasNext())
        {
            Integer ii=(Integer)iter.next();//요소가져오기
            System.out.println(ii.intValue());
        }
*/
        //subList(시작값,끝값-1)
        //list=10 20 30 40 50
        ArrayList list2=new ArrayList(list.subList(1, 3));
        System.out.println(list2);

        list2.add("B");//요소추가
        list2.add("C");
        System.out.println(list2);
       
        //원하는 위치에 요소 추가하기
        list2.add(0, "A");
        System.out.println(list2);
       
        //요소값 수정
        list2.set(3, "HAPPY");
        System.out.println(list2);
       
        //list=10 20 30 40 50
        //list2=A 20 30 HAPPY C
       
        //요소삭제
        list2.remove(3);
        System.out.println(list2);
       
        //list2에서 list에 포함된 객체들을 삭제함
        for(int i=list2.size()-1;i>=0;i--){
            if(list.contains(list2.get(i))) list2.remove(i);
        }
       
        System.out.println(list2);
    }
}

 

---------------------------------------------------set 예제

  HashSet hs=new HashSet();
  hs.add("happy");
  hs.add("seoul");
  hs.add("sky");
  hs.add("sky"); 
  System.out.println(hs.size());

 

----------------------------------------------------map 예제

  HashMap hm=new HashMap();
  hm.put(one", "대한민국");
  hm.put("two", "오필승코리아");
  hm.put("three", "오필승코리아");

  System.out.print(hm.get(one"));