1. ArrayList(Collection<? extends E> c) 


- Collection<? extends E> c : E타입의 클래스이거나 E타입을 상속받은 자식클래스가 제네릭타입으로 지정됨


- Collection<? super E> c : E타입의 클래스이거나 E타입의 부모클래스가 제네릭타입으로 지정됨



ex>

package test01.util;

import java.util.ArrayList;


class AA{

    private int a;


    public AA(int a){

        this.a=a;

    }

    public int getA(){

        return a;

    }

}

class BB extends AA{


    private int b;


    public BB(int a,int b){

        super(a);

        this.b=b;

    }

    public int getB(){

        return b;

    }

}

public class Test06_generic{


    public static void main(String[] args)

    {

        ArrayList<BB> list1=new ArrayList<BB>();


        list1.add(new BB(1,2));

        list1.add(new BB(3,4));

        list1.add(new BB(5,6));

        

        //ArrayList<String> list=new ArrayList<String>();

        //list.add(new AA(1));

        

        //list1은 AA의 자식클래스들을 담고 있으므로 가능!

        ArrayList<AA> list2=new ArrayList<AA>(list1);

        

        for(int i=0;i<list2.size();i++){

            AA aa=list2.get(i);

            System.out.println(aa.getA());

        }

    }

}

 






2.  제네릭 클래스


- 특정 자료형에 상관없이 똑같은 알고리즘이 적용되는 클래스인 경우 제네릭 클래스로 만들수 있다.



EX>

package test01.util;

class Data<T>{

    private T a;

    public void setA(T a){

        this.a=a;

    }

    public T getA(){

        return a;

    }

}

public class Test07_generic{


    public static void main(String[] args)

    {

        Data<Integer> d1=new Data<Integer>();

        d1.setA(10);

        System.out.println(d1.getA());

        

        Data<String> d2=new Data<String>();

        d2.setA("아리랑");

        System.out.println(d2.getA());

    }

}

 






3. 확장for문


- jdk5.0버전 이상부터 지원됨


- 형식)

    for(저장변수:컬렉션객체 또는 배열)

    {

        반복실행문장;

        ...

    }



EX>

package test01.util;

import java.util.ArrayList;


public class Test08_for{


    public static void main(String[] args)

    {

        int []a={10,20,30,40,50};


        //배열a의 요소가 순차적으로 k에 저장됨

        for(int k:a){

            System.out.print(k +" ");

        }

        System.out.println();


        ArrayList<String> list=new ArrayList<String>();

        list.add("하나");

        list.add("둘");

        list.add("세엣");

        list.add("네엣");


        for(String str:list)

        {

            System.out.print(str + " ");

        }

        System.out.println();

        

        ArrayList<Member> list1=new ArrayList<Member>();


        list1.add(new Member("song","1234","song@naver.com"));

        list1.add(new Member("kim","0000","kim@naver.com"));

        list1.add(new Member("lee","1111","lee@naver.com"));


        //확장for이용해서 list1의 데이터를 출력해 보세요.

        for(Member mm:list1)

        {

            System.out.println("아이디:" + mm.getId());

            System.out.println("비밀번호:" + mm.getPwd());

            System.out.println("이메일:" + mm.getEmail());

        }

    }

}




 

 

'JAVA' 카테고리의 다른 글

예외처리 ( Exception )  (0) 2014.09.12
Calendar 클래스  (0) 2014.09.12
자료구조 - Map  (0) 2014.09.12
자료구조 - Stack / TreeSet  (0) 2014.09.12
자료구조 API - Collection 프레임워크  (0) 2014.09.12

+ Recent posts