1. Stack


- LIFO(Last In First Out)구조의 자료구조를 갖는 클래스



ex> st에 객체 세개를 저장하고(push메소드) 세개 객체를 꺼내오세요.(pop메소드)


import java.util.Stack;

class Test01_stack{


    public static void main(String[] args)

    {

        Stack<String> st=new Stack<String>();


        //public E push(E item)

        //요소 저장하기

        st.push("하나");

        st.push("두울");

        st.push("세엣");


        //저장된 요소의 갯수 얻어오기

        int size=st.size();


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


            //마지막에 저장된 요소순으로 꺼내오기

            String str=st.pop();

            System.out.println(str);

        }

    }

}






2. TreeSet


ex> TreeSet객체에 값넣고 출력하기.

package test01.util;

import java.util.Iterator;

import java.util.TreeSet;

public class Test02_TreeSet

{

    public static void main(String[] args)

    {

        //TreeSet은 정렬기능을 갖고 있다.

        TreeSet<String> ts=new TreeSet<String>();

        ts.add("홍길동");

        ts.add("김철수");

        ts.add("유관순");

        

        Iterator<String> it=ts.iterator();

        while(it.hasNext())

        {

            String str=it.next();

            System.out.println(str);

        }

    }

}






 

 

 

 

                [컬렉션프레임워크]

           Collection(자료구조에 관련된 인터페이스)

                           |

                           |

        List                                Set

          |                                     |

          |                                     |

  ArrayList,Vector,...               HashSet,TreeSet,...



  * List계열의 클래스

   - 값을 저장할 때 순서가 있다.

   - 중복된 값을 저장할 수 있다.


  * Set계열의 클래스

   - 값을 저장할 때 순서가 없다.

   - 중복된 값을 허용하지 않는다.




ex> 제너릭 사용/미사용 예

import java.util.HashSet;

import java.util.Iterator;

class Test05_Set{


    public static void main(String[] args)

    {

        HashSet<String> hs=new HashSet<String>();

        hs.add("봄");

        hs.add("여름");

        hs.add("가을");

        hs.add("겨울");

        hs.add(new String("여름"));


        // 제네릭을 사용하지 않은 경우

        //Iterator<E> iterator()  

        Iterator it=hs.iterator();

        while(it.hasNext())

        {

            String st=(String)it.next();

            System.out.println(st);

        }

        

        //제네릭을 사용한 경우

        Iterator<String> it2=hs.iterator();

        while(it2.hasNext())

        {

            String st=it2.next();

            System.out.println(st);

        }

    }

}








ex>HashSet객체에 Member객체 3개를 담고 데이터를 모두 출력해 보세요.

import java.util.*;

class Member{


    private String id;

    private String pwd;


    public Member(String id,String pwd)

    {

        this.id=id;

        this.pwd=pwd;

    }

    public String getId()

    {

        return id;

    }

    public String getPwd()

    {

        return pwd;

    }

    

    //equals메소드 오버라이딩:두 객체의 id와 pwd가 일치하면 true리턴

    public boolean equals(Object obj)

    {

        Member mm=(Member)obj;

        if(id.equals(mm.getId()) && pwd.equals(mm.getPwd()))

        {

            return true;

        }else

        {

            return false;

        }

    }


    //hashCode메소드 오버라이딩:두객체의 문자열이 같으면 동일한 해쉬코드반환

    public int hashCode()

    {

        return (id+pwd).hashCode();

    }

}


//HashSet객체에 Member객체 3개를 담고 데이터를 모두 출력해 보세요.

class  Test06_Set{


    public static void main(String[] args)

    {

        HashSet<Member> hs=new HashSet<Member>();

        hs.add(new Member("song","1234"));

        hs.add(new Member("kim","5678"));

        hs.add(new Member("lee","0000"));

        hs.add(new Member("kim","5678"));


        Iterator<Member> it=hs.iterator();

        while(it.hasNext())

        {

            Member mem=it.next();

            System.out.println(mem.getId() +","+ mem.getPwd());

        }

    }

}




 

 

'JAVA' 카테고리의 다른 글

자료구조 - Map  (0) 2014.09.12
자료구조 - Stack / TreeSet  (0) 2014.09.12
자료구조 API - 제네릭(Generic)  (0) 2014.09.12
자료구조 API - Vector 클래스  (0) 2014.09.12
자료구조 API - ArrayList  (0) 2014.09.12

 

1. 제네릭(Generic) 


- 자료구조관련클래스(ArrayList,Vector,..)에 특정클래스타입만 저장할 수 있도록 설정하는 것


- 자료구조관련 클래스에 실수로 다른 클래스타입을 저장됨을 방지할 수 있다. (안전하게 사용가능)


- 저장된 객체를 꺼내올때 형변환을 하지 않아도 된다.


- JDK5.0 이상 버전부터 사용 가능하다.


- 형식

 클래스명<저장할클래스타입> 객체명=new 클래스명<저장할클래스타입>();



ex>

import java.util.ArrayList;

class Test04_Generic{


    public static void main(String[] args)

    {

        //ArrayList에는 String타입의 객체만 저장하도록 설정

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


        list.add("홍길동0");

        list.add("홍길동1");

        list.add("홍길동2");


        //list.add(10);

        //-->오류발생:String외의 타입은 사용못함


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


            // 제네릭을 사용하면 요소를

            // 꺼내올때 형변환 하지 않아도 됨

            String str=list.get(i);

            System.out.println(str);

        }


        System.out.println("====================");


        // list1객체에는 Student타입의

        // 객체만 저장하도록 설정

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


        list1.add(new Student(1,100,80));

        list1.add(new Student(2,80,90));

        list1.add(new Student(3,100,100));


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


            //제네릭을 사용했으므로 형변환하지 않음

            Student stu=list1.get(i);

            stu.printStu();

        }

    }

}




 

 

'JAVA' 카테고리의 다른 글

자료구조 - Stack / TreeSet  (0) 2014.09.12
자료구조 API - Collection 프레임워크  (0) 2014.09.12
자료구조 API - Vector 클래스  (0) 2014.09.12
자료구조 API - ArrayList  (0) 2014.09.12
Wrapper클래스  (0) 2014.09.12

 

1. Vector 클래스


- 객체를 배열처럼 관리해주는 클래스(ArrayList와 유사함)


- Vector와 ArrayList의 차이점


 1) Vector는 스레드의 동기화 지원

   -->멀티스레드환경에서는 안전하나 많은 자원이 소모됨,무겁다


 2) ArrayList는 스레드의 동기화가 지원안됨

  -->멀티스레드 환경이 아니라면 ArrayList를 사용하는것이 효율적.(가볍다)




ex> Vector객체 생성 후 속성 출력 및 전체 출력

import java.util.Vector;

import java.util.Enumeration;

class Test03_Vector{


    public static void main(String[] args)

    {

        //기본용량은 10이고 10이 다 채워지면 5개씩 늘려라

        Vector vec=new Vector(10,5);

        vec.add("봄");

        vec.add("여름");

        vec.add("가을");

        vec.add("겨울");

        vec.add("봄1");

        vec.add("여름1");

        vec.add("가을1");

        vec.add("겨울1");

        vec.add("봄2");

        vec.add("여름2");

        vec.add("가을2");

        vec.add("겨울2");


        //public int capacity()

        System.out.println("벡터용량:"+vec.capacity());

        //15가 출력됨


        //public int size()

        System.out.println("벡터크기:"+vec.size());

        //벡터에저장된 요소의갯수 : 12가 출력됨


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

            System.out.println(vec.get(i));

        }


        //public Enumeration elements()

        Enumeration em=vec.elements();


        //boolean hasMoreElements()

        //        :다음요소가 있으면 참 리턴

        //Object nextElement()

        //        :다음 요소를 반환


        while(em.hasMoreElements()){

            Object ob=em.nextElement();

            System.out.println(ob);

        }

    }

}





 

 

'JAVA' 카테고리의 다른 글

자료구조 API - Collection 프레임워크  (0) 2014.09.12
자료구조 API - 제네릭(Generic)  (0) 2014.09.12
자료구조 API - ArrayList  (0) 2014.09.12
Wrapper클래스  (0) 2014.09.12
String클래스와 StringBuffer클래스의 차이  (0) 2014.09.12

 

1. ArrayList(**)


- 객체를 배열처럼 저장하고 관리하는 클래스


- 배열은 사이즈가 고정되어 있지만 ArrayList는 사이즈가 동적이다.




ex> ArrayList를 사용하여 값을 입력하고 특정 인덱스 요소 제거, 변경, 출력하기.

import java.util.ArrayList;

class  Test01_ArrayList{


    public static void main(String[] args)

    {

        String str1=new String("이순신");

        String str2=new String("김순신");

        String str3=new String("전순신");

        String str4=new String("박순신");


        ArrayList list=new ArrayList();


        //public boolean add(Object e)

        //    :객체를 ArrayList에 추가

        list.add(new String("하나둘"));

        list.add(str2);

        list.add(str3);

        list.add(str4);

        

        //인덱스1번째 요소 제거, 0부터 시작함. 인덱스로 찾아도 되고,입력된 String값으로 찾아 지워도 된다.

        list.remove(1);

        list.remove("김순신");


        //public E set(int index, E element)

        //0번째 요소를 "헬로우"로 바꿈

        list.set(0,new String("헬로우"));


        //public int size() 

        //: ArrayList의 크기(요소의갯수) 얻어옴

        int length=list.size();


        //public Object get(int index)

        //: index 위치의 요소 꺼내옴

        for(int i=0;i<length;i++){

           String aa=(String)list.get(i);

           System.out.println(aa +",문자열갯수:"+aa.length());

        }

    }

}





ex> ArrayList에 담긴 회원에 대한 정보를 모두 출력해 보세요.


Iterator<E> iterator() 


import java.util.ArrayList;

import java.util.Iterator;


class Member{


    private String id;

    private String pwd;


    public Member(String id,String pwd)

    {

        this.id=id;

        this.pwd=pwd;

    }

    public String getId(){

        return id;

    }

    public String getPwd(){

        return pwd;

    }

}

class  Test02_ArrayList{


    public static void main(String[] args)

    {

        ArrayList list=new ArrayList();

        list.add(new Member("song","1234"));

        list.add(new Member("kim","0000"));

        list.add(new Member("lee","0707"));


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

            Member ob=(Member)list.get(i);

            System.out.println("아이디:"+ob.getId() +",비밀번호:"+ob.getPwd());

        }

        

        //Iterator<E> iterator() 

        //: 컬렉션 계열의 클래스에 저장된 요소들을 

        //   읽어오는 방법의 표준화된 방법 제공


        Iterator it=list.iterator();


        //boolean hasNext()

        //        : 다음요소가 있으면 true 리턴

        //Object next()   : 다음요소를 리턴


        while(it.hasNext()){


            //Object ob=it.next();

            Member mm=(Member)it.next();

            System.out.println(mm.getId() +"," + mm.getPwd());

        }

    }

}




 

 

'JAVA' 카테고리의 다른 글

자료구조 API - 제네릭(Generic)  (0) 2014.09.12
자료구조 API - Vector 클래스  (0) 2014.09.12
Wrapper클래스  (0) 2014.09.12
String클래스와 StringBuffer클래스의 차이  (0) 2014.09.12
lang 패키지  (0) 2014.09.12

+ Recent posts