[Java] Java Collection Framework에 대하여
1. Collection Framework란?
우선 배열을 사용하다보면 여러가지 비효율적인 문제가 발생하는데 그 중에서 가장 큰 문제는 크기가 고정이라는 것이다. 배열의 크기는 생성할 때 결정되며 그 크기를 넘어가게 되면 더이상 데이터를 저장할 수 없고, 또 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생한다. 이런 문제를 해결하기 위해 사용되는 것이 바로 컬렉셕 프레임워크이다.
컬렉션 프레임워크는 데이터를 저장하고 처리하는 자료구조와 알고리즘 구조화하여 클래스로 구현해 놓은 것으로써, 자바의 인터페이스를 사용하여 구현된다. 컬렉션 프레임워크를 활용하면 객체 지향적이고 재사용성이 높은 코드를 작성할 수 있다.
2. Collection Framework의 주요 인터페이스
2-1.리스트(list)
리스트(list) 컬렉션을 객체를 일렬로 늘어놓은 구조를 가지고 있다. 리스트(list) 컬렉션은 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인덱스가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공한다. 리스트(list) 컬렉션은 객체 자체를 저장하는 것이 아니라 위와 같이 객체의 번지를 참조하고, 동일한 객체를 중복 저장할 수 있는데 이 경우 동일한 번지가 참조된다.
다음 예제는 리스트(list) 컬렉션의 대표적인 클래스인 ArrayList의 예제문이다.
ArrayList<Integer> list = new ArrayList<Integer>(); //타입설정을 하여 int타입만 사용 가능
//값 추가
listlist.add(3); //일반적인 값 추가
list.add(null); //null값도 추가 가능
list.add(1,10); //index 1에 10 삽입, 순서를 지정하여 삽입 가능
//값 제거
list.remove(1); //index 1 제거
list.clear(); //모든 값 제거
//크기 구하기
System.out.println(list.size()); //list 크기 : 3
//값 검색
System.out.println(list.contains(1)); //list에 1이 있는지 검색 : true
System.out.println(list.indexOf(1)); //1이 있는 index반환 없으면 -1
2-2.맵(Map)
맵(Map) 컬렉션은 키(key)와 값(value)으로 구성된 객체를 저장하는 구조를 가지고 있는 자료구조입니다. 키(key)는 중복으로 저장할 수 없고 값(value)은 중복으로 저장할 수 있으며 중복된 키(key)값이 들어온다면 기존의 값은 없어지고 새로운 값으로 대치된다.
다음 예쩨는 맵(Map) 컬렉션의 대표적인 클래스인 HashMap의 예제문이다.
HashMap<String,String> map2 = new HashMap<>(); //해쉬 맵 생성
//값 추가
map.put(1,"국어");
map.put(2,"수학");
map.put(3,"영어");
//값 삭제
map.remove(1); //key값 1 제거
map.clear(); //모든 값 제거
//값 조회
map.get("Key1"); // Key1에 해당하는 Value 리턴