1. Array (배열)

길이가 고정된 경우, 배열을 사용하는 것을 추천합니다.

 

public class growing_test{
     public static void main(String []args){
        int[] odds = {1, 3, 5, 7, 9};
        
        String[] weeks = {"월", "화", "수", "목", "금", "토", "일"};
        for (int i=0; i<weeks.length; i++) {
            System.out.println(weeks[i]);
        }
        
        String[] weeks2 = new String[7];
        weeks2[0] = "월";
        weeks2[1] = "화";
        weeks2[2] = "수";
        weeks2[3] = "목";
        weeks2[4] = "금";
        weeks2[5] = "토";
        weeks2[6] = "일";
        for (int i=0; i<weeks2.length; i++) {
            System.out.println(weeks2[i]);
        }
    }
}

 추가팁 : java.lang.ArrayIndexOutOfBoundsException

 weeks.length+1 루프로 for문을 돌리는 것처럼 돌려보면 아래와 유사한 에러가 발생합니다. 이 에러는 흔하게 만나게 되는 에러로, 배열의 길이를 넘어서는 값에 대해 작업을 시도하면 발생합니다.

java.lang.ArrayIndexOutOfBoundsException

 

 

 

2. List (리스트)

배열과 유사하지만, 명확한 크기를 알 수 없는 경우 즉 동적으로 자료형의 개수가 변하는 상황에서는 List를 사용하는 것을 추천합니다.

import java.util.ArrayList;

public class growing_test{
    public static void main(String []args){
        ArrayList pitches = new ArrayList();
        pitches.add("138");
        pitches.add("129");
        pitches.add("142");
        System.out.println(pitches);
        pitches.add(0, "133");
        pitches.add(2, "133");
        System.out.println(pitches);
        System.out.println(pitches.get(1));
        System.out.println(pitches.size());
        System.out.println(pitches.contains("142"));
        System.out.println(pitches.contains("99"));
        System.out.println(pitches.remove("133"));
        System.out.println(pitches);
        System.out.println(pitches.remove(2));
        System.out.println(pitches);
    }
}

 

 

 

3. Generics (제네릭스)

아래는 제네릭스를 사용하지 않은 코드입니다.

제네릭스를 사용하지 않을 경우, String과 같은 자료형이 아니라 Obkect 자료형으로 인식시키므로, 이후에 사용할 때 자료형을 별도로 선언해줘야합니다.

import java.util.ArrayList;

public class growing_test{
    public static void main(String []args){
        ArrayList aList = new ArrayList();
        aList.add("hello");
        aList.add("java");
        
        // Object를 String으로 캐스팅함
        String hello = (String) aList.get(0);
        String java = (String) aList.get(1);
        
        System.out.println(hello);
        System.out.println(java);
    }
}

아래는 제네릭스를 사용한 코드입니다.

import java.util.ArrayList;

public class growing_test{
    public static void main(String []args){
        ArrayList<String> aList = new ArrayList<String>();
        aList.add("hello");
        aList.add("java");
        
        String hello = aList.get(0);
        String java = aList.get(1);
        
        System.out.println(hello);
        System.out.println(java);
    }
}

위에서 볼 수 있듯이, 제네릭스를 사용하면 처음 선언시에 Object 자료형으로 인식되도록 작성하는 것이 아니라 String으로 인식되도록 작성해주고, 이후에 이를 받아 사용할 때에는 별도로 String 캐스팅을 하지 않아도 가져다 쓰는 데에 문제가 없습니다.

예시에서는 <String>을 사용했으나 <Integer>, <Animal>, <Dog> 등 어떤 자료형에도 사용할 수 있습니다.

제네릭스를 사용하면 형변환에 의한 불필요한 코딩, 잘못된 형변환에 의한 런타임 오류 등에서 벗어날 수 있습니다.

제네릭스 사용하는 것을 강력 추천합니다.

 

 

 

4. Map (맵)

아래 예제에서의 HashMap의 제네릭스는 Key, Value 모두 String 타입이므로 String으로 설정해줍니다.

import java.util.HashMap;

public class growing_test{
    public static void main(String []args){
        HashMap<String, String> map_sample = new HashMap<String, String>();
        map_sample.put("people", "사람");
        map_sample.put("baseball", "야구");
        System.out.println(map_sample);
    }
}

정수의 경우 Integer로 사용할 수도 있습니다.

import java.util.HashMap;

public class growing_test{
    public static void main(String []args){
        HashMap<String, Integer> map_sample = new HashMap<String, Integer>();
        map_sample.put("One", 1);
        map_sample.put("Two", 2);
        System.out.println(map_sample);
    }
}

get, containsKey, remove, size 활용 예시

import java.util.HashMap;

public class growing_test{
    public static void main(String []args){
        HashMap<String, String> map_sample = new HashMap<String, String>();
        map_sample.put("people", "사람");
        map_sample.put("baseball", "야구");
        // people의 value값 출력
        System.out.println(map_sample.get("people"));
        // 포함여부확인 : 포함한 Key 입력
        System.out.println(map_sample.containsKey("baseball"));
        // 포함여부확인 : 포함하지 않은 Key 입력
        System.out.println(map_sample.containsKey("soccer"));
        // Key값이 people인 아이템 삭제, 삭제된 아이템의 Key값 출력
        System.out.println(map_sample.remove("people"));
        // map_sample의 크기 출력
        System.out.println(map_sample.size());
    }
}

 

 

 

+ Recent posts