Language/Java

Collections

kalza 2018. 9. 3. 14:46

자바 컬렉션 프레임워크는 배열과 같이 데이터를 효율적으로 관리하기 위한 인터페이스다.

배열에는 고정값의 크기를 사용하지만 컬렉션은 필요에따라 제한없이 데이터를 추가 할 수있다.

컬렉션에는 대표적으로 List와 Map이 있고 이를 상속하여 구현된 클래스들이 여럿 있지만

포스팅에서는 List-ArrayList와 map-HashMap을 다루도록 하겠다.




List

순서가 있는 데이터의 집합으로 인덱스를 이용하며 데이터를 관리하며, 데이터 중복이 가능하다.


아래와 같이 문자열 데이터를 관리 할 수 있도록 ArrayList 객체를 생성하고 데이터가 몇개 담겼는지를 리턴해주는

size 메서드를 출력문에 써서 체크해본다.


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

 System.out.println("list.size : " + list.size());            // 결과 : list.size : 0



list 변수에 문자열 데이터를 추가하고 다시한번 사이즈를 체크하고, list변수에 어떤 데이터가 담겨있는지 출력한다.


 list.add("Hello");

 list.add("Java");

 list.add("World");

 System.out.println("list.size : " + list.size());            // 결과 : list.size : 3

 System.out.println("list : " + list);                        // 결과 : list : [Hello, Java, World]



list는 인덱스를 통해 데이터를 관리할 수 있다고 했다.

추출,추가,변경,삭제할 데이터도 인덱스를 통해 접근하여 작업 할 수 있다.


 String str = list.get(2)             // 2번째 인덱스에 담긴 값을 str 변수에 대입 

 list.add(2, "Programming"); // 2번째 인덱스에 "Programming" 문자열 데이터 추가

 list.set(1, "C"); // 1번째 인덱스 데이터의 값을 문자열 "C" 로 변경

 list.remove(3);                      // 3번째 인덱스 데이터를 삭제



list에 적재된 모든 데이터를 삭제하는 clear 메서드도 존재한다.


 list.clear();                        // list에 담긴 모든 값들을 삭제





Map

유일한 값을 가지는 key중복이 가능한 value값 쌍으로 존재하여 데이터를 관리한다.


데이터 접근 열쇠가 되는 key를 정수로, 담길 데이터는 String으로 하는 HashMap 객체를 생성한다.


 HashMap<Integer, String> map = new HashMap<Integer, String>();



key값을 이용해 데이터를 관리 할 수 있다.


 map.put(5, "Hello");                // "Hello"라는 데이터는 이제 '5'라는 키를 이용해서 관리된다. 

 map.put(6, "Java");                 // "Java"라는 데이터는  이제 '6'이라는 키를 이용해서 관리된다. 

 map.put(7, "World");              // "World"라는 데이터는 이제 '7'이라는 키를 이용해서 관리된다.

 

 map.remove(7);                    // 7이 관리하는 데이터가 삭제된다. (World)

 map.put(5, 'C')                     // 5가 관리하는 값을 "C"로 변경한다.

 map.clear();                         // 데이터 전체를 삭제한다.