자바에서 Collection Framework란?다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합. 음.. 그러니까 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화해서 클래스에서 구현한 것의 집합체? 라는 의미인데…
내가 이해하기에는 우선 클래스 집합체라기보다는 인터페이스 집합체인 것 같다.왜냐하면 결국 ‘컬렉션 프레임워크’라는 것이 데이터를 저장하는 자료 구조이고, 이 자료 구조의 유형에는 네 가지가 존재한다.
- 순서가 있는 목록인 List형-순서가 중요하지 않은 Set형-KEY-VALUE가 한 쌍이 되는 Map형, 그리고 먼저 들어간 것이 먼저 나오는 선입견형인 Que형이 있는데 잘 사용하지 않을 것 같은 보통의 List, Set, Map 컬렉션의 설명만 나열되어 있다.어쨌든 이 List, Set, Map은 인터페이스로 결국에는 이 인터페이스를 구현하는 대표 클래스가 존재한다.
- List 인터페이스를 구현하는 대표 클래스인 Array List 클래스, Set 인터페이스를 구현하는 대표 클래스인 해시 Set, Map 인터페이스를 구현하는 대표 클래스인 해시 Map과 같이 말이다.그러니까 collection Framework라고 알고 있는 List, Set, Map은 인터페이스라는 것.. 위에 설명과 큰 차이가 없는 데이터를 쉽고 효과적으로 처리하기 위한 표준화된 방법을 제공하는 인터페이스를 말하는 것. 이라고 나는 생각하지만 다들 클래스의 집합체라고 설명해 놓은 것을 보면 그냥 그렇게 알면 될 것 같다.
- List 인터페이스를 실현하고 있는 대표 클래스 Array List부터 보자!!!
- ArrayList <Integer> list = new ArrayList <> ( ); <Integer> 라는 자료형 앞의 ArrayList는 java.util.List 를 import 하고 List <Integer> list = new ArrayList <> ( );도 마찬가지다.
- list.add(3);list.add(5);list.add(7);list.add(9);list는 내부구조가 배열이다.따라서 순서대로 저장되며 index를 가지고 있다는 뜻이다.list.get(2) 이 값을 출력하면 7이라고 하는 int 타입의 값을 꺼낸다. 또한 순서대로 값이 저장되기 때문에 데이터의 중복 저장을 허용한다.list.add(9); list.add(9); 이렇게 하면 세 번째 네 번째 다섯 번째 index에 마찬가지로 9라는 값이 저장된다 그리고 add 메서드의 반환 유형은 boolean이다.System.out.println(list.add(9); 이렇게 출력해 보면 true라는 값이 나온다.
- Set 인터페이스의 대표 구현 클래스인 Hash Set을 살펴보자.
- Set <Integer> set=new HashSet <> ( ); set.add (9); set.add (10); set.add (11);
- set는 식별자, 즉 index가 없는 순서가 중요하지 않은 자료 구조이기 때문이다.값이 곧 식별자이므로 값의 중복 보존을 허용하지 않는다
- 그래서 set.add(11);를 다시 해도 set.size()를 출력해 보면 3으로 나온다 그리고 System.out.println (set)해보니 [9,10,11]이지 [9,10,11]가 아니다!! 기억하면 중복되는 값을 저장할 수 없다
- Map 인터페이스의 대표 클래스인 HashMap 클래스를 보자 Map <String, Object> map=new HashMap <> ( ); map.put (“이름”, “지민”); map.put (“나이”, 29); map.put (“title”, “나는 누구인가”);
- 이와 같이 key값과 value값을 쌍으로 가진다.key 값은 다른 말로 속성이라고도 한다.어쨌든 이 두 유형을 모두 지정해야 하고 가격에 어떤 유형을 모두 저장하고 싶다면 최상위 클래스 Object로 지정~~ 그리고 key 값은 중복되면 안 되는 Key 값에서 value 값을 찾기 때문에 소리 오류가 나지 않지만 마지막으로 저장된 key 값의 value 값을 찾는 즉 map.put(“title”, “나는 누구인가”); map.put(“title”, “나는 누구인가”); map.put(“title”, “나는 누구니?”); 이렇게 해서 System.out.println(map.get(“title”); 이렇게 출력하면 답은? 밑에 저장해둔 나는 누구?가 출력된다
- 그리고 List와 Set은 출력 시 배열 형태로 [1,2,3] 이렇게 나오고 Map은 {name=지민, age=29, title=나는 누구인가} 이렇게 나온다.