ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA 19] 자바 가변 배열 ( Collection / 컬렉션) ① List
    Language/Java 2018. 2. 11. 18:38
    반응형


    3. 특징

    1) List

    (1) '  ' 가 보존된다.

    (2) ' 중복 ' 이 허용된다.


    ① Generic

    ② Enhanced Loop ( 강화된 반복분 )

    ③ Boxing ( AutoBoxing / UnBoxing )



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    import java.util.*;        // * = 모든 것을 임폴트 한다.
     
    class ListS1{             // List Study 1
        
        Vector v = new Vector(); // 제네릭을 사용하지 않았다.
     
        void in(){
            v.add(" 봄 ");     // List 계열은 배열변수.add(); 로 저장한다.
            v.add(" 여름 ");
            v.add(" 가을 ");
            v.add(" 겨울 ");
            v.add(" 여름 ");  // 여름을 중복 시켜 보았다.
        }
     
        void out(){
            for(int i=0 ; i < v.size() ; i++){    // v.size() 는 배열변수.length() 와 의미가 같다.
                Object obj = v.get(i); // get(); 데이터 가지고 오기
                String season = (String)obj;
                System.out.println(" v.get( " + i + " ) : " + season);
            }
        }
        
        public static void main(String[] args){
            ListS1 ls1 = new ListS1();
            ls1.in();
            ls1.out();
        }
    }
    cs




    ① Generic

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import java.util.*;
     
    class ListS2{
        
        Vector<String> v = new Vector<String>();    // Generic
                                                    // jdk 5.0(=1.5이상)
        void in(){
            v.add(" 봄 ");
            v.add(" 여름 ");
            v.add(" 가을 ");
            v.add(" 겨울 ");
            v.add(" 여름 ");
        }
     
        void out(){
            for(int i=0 ; i < v.size() ; i++){
                /*Object obj = v.get(i);            // Generic
                  String season = (String)obj;*/
                String season = v.get(i);
                System.out.println(" v.get( " + i + " ) : " + season);
            }
        }
        
        public static void main(String[] args){
            ListS2 ls2 = new ListS2();
            ls2.in();
            ls2.out();
        }
    }
    cs




    ② Enhanced Loop ( 강화된 반복분 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    import java.util.*;
     
    class ListS3{
        
        Vector<String> v = new Vector<String>();
                                                    
        void in(){
            v.add(" 봄 ");
            v.add(" 여름 ");
            v.add(" 가을 ");
            v.add(" 겨울 ");
            v.add(" 여름 ");
        }
     
        void out1(){
            for(int i=0 ; i < v.size() ; i++){
                String season = v.get(i);
                System.out.println(" season : " + season);
            }
        }
     
        void out2(){
            for(String season : v){  // Enhanced Loop(jdk5.0 이상) , void out1() 과 같은 내용이다.
                System.out.println(" season : " + season);
            }
        }
     
        int is[] = {1 , 2 , 3 , 4 , 5};
     
        void out3(){
            for(int data : is){            // 고정 배열에서도 사용 가능하다.
                System.out.println(" data : " + data);
            }
        }
        
        public static void main(String[] args){
            ListS3 ls3 = new ListS3();
            ls3.in();
            ls3.out1();
            System.out.println("");
            ls3.out2();
            System.out.println("");
            ls3.out3();
        }
    }
    cs




    ③ Boxing ( AutoBoxing / UnBoxing )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    import java.util.*;
     
    class ListS4{
        
        Vector<Integer> v = new Vector<Integer>();
     
        void in(){ // JVM이 자동으로 해준다. ↓
            v.add(10);                 // AutoBoxing (jdk5.0 이상)
            v.add(new Integer(20));    // int a = 20 → new Interger(a)
            v.add(new Integer(30)); // ← Boxing 개발자가 직접 해야한다.
        } // 현재는 할 필요 없다.
     
        void out1(){
            for(Integer it : v){
                int a = it.intValue(); // jdk5.0미만에서는 직접 했었다.
                int b = a;             // UnBoxing (jdk5.0 이상)
                System.out.println("1. b : " + b);
            }
        }
     
        void out2(){
            for(int b : v){            // UnBoxing (jdk5.0 이상)
                System.out.println("2. b : " + b);
            }
        }
     
        public static void main(String[] args){
            ListS4 ls4 = new ListS4();
            ls4.in();
            ls4.out1();
            System.out.println("");
            ls4.out2();
        }
    }

    cs



    그래서 AutoBoxingUnBoxing 은 무엇이냐?

    1) AutoBoxing (오토박싱)   

    - 상자를 자동으로 꾸리다.

    - 기본형(Primitive) 타입의 변수를 ' Wrapper Class ' 로 바꾸어 주는 것.

    (1. Wrapper Class 는 나중에 하겠습니다. 

    죄송합니다. 연동되어 있는게 많으니 설명하는 것도 일이네요 ; - ; )

    (2. 기본형(Primitive) 타입에는 8가지가 있는 것을 지난번 포스팅에서 다루었습니다.)

    (3. 그렇다면 ' Wrapper Class ' ( 랩퍼클래스 / 래퍼클래스)에도 8가지가 있겠군요!!)

    char만 유일하게 String으로 박싱이 안된다.


    2) UnBoxing (언박싱)

    - 상자에서 내용물을 꺼낸다.

    - ' Wrapper Class ' 타입의 값을 기본형(Primitive) 타입으로 바꾸어 주는 것.

    그래도 아직 감이 안잡힐까봐, 한번 로직을 작성해 보았습니다.


    이해가 가시나요? 복습을 하시다 보면 감이 오실 겁니다.





    ④ remove / clear ( 제거 / 삭제 / 깨끗 )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    import java.util.*;
     
    class ListS5{
        
        Vector<Integer> v = new Vector<Integer>();// 가변배열 Vector (1)선언 + (2)생성
        int is[] = {1 , 2 , 3 , 4 , 5};           // 고정배열 Array  (1)선언 + (2)생성 + (3)초기화
        
        void in(){
            for(int i : is){
                v.add(i);                         // 가변배열 Vector (3)초기화
            }
        }
     
        void out1(){
            v.remove(2); // 2번 자리에 있는 배열의 내용을 삭제한다. 0 1 2 이기 때문에 3이 사라진다.
            for(int i : v){
                System.out.println("1. i : " + i);
            }
        }
     
        void out2(){
            v.clear();        // 배열 안에 있는 모든 내용을 삭제한다.
            v.add(10);        // 그리고 새로 2개를 추가하였다.
            v.add(20);
            for(int i : v){
                System.out.println("2. i : " + i);
            }
        }
     
        public static void main(String[] args){
            ListS5 ls5 = new ListS5();
            ls5.in();
            ls5.out1();
            System.out.println("");
            ls5.out2();
        }
    }
    cs


    remove 를 이용하면 , 배열 안의 하나의 값을 지우고,

    clear 을 이용하면 , 배열 안의 모든 값을 지웁니다.

    반응형
Designed by Tistory.