Collection Framework 란?
- 여러 데이터들을 편하게 처리하기 위한 방법을 제공해주는 클래스들의 모임
- Collection : 데이터 그룹
- Framework : 프로그래밍 방식
- Collection Framework의 핵심적인 Interface는 List, Set, Map가 있다.
▶ List - 순서가 있고 중복이 가능한 데이터의 집합
List인터페이스를 상속받고 있는 대표적인 Class(ArrayList, Vector, LinkedList)
(1) ArrayList Class
- 배열과 비슷한 기능을 하지만 다루기 쉽고 유동적이다. (배열의 단점을 보완)
ArrayList<String> a1 = new ArrayList<String>(); ---> a1 객체를 생성
a1.add("data") ---> 데이터가 추가 순서대로 들어간다.
a1.remove(index) ---> 해당 index에 위치하는 데이타를 지운다.
지워진 인덱스를 기준으로 한칸씩 앞으로 당겨서 채워진다.
a1.set(index, data) ---> 해당 index위치에 데이터를 바꾼다.
a1.add(index, data) ---> 해당 index위치에 데이터를 삽입한다.
그 위치의 데이터부터는 뒤로 한칸씩 밀려난다
a1.size() -----> a1 객체의 크기를 가져온다.
a1.get(index) ---> 해당 index의 데이터를 가져온다.
이외에도 ArrayList 관련메서드는 다음과 같이 아주 많다. 필요할때 꺼내쓰면 된다.
Vector은 잘 안쓰이고 LinkedList는 ArrayList랑 거의 비슷하다.
ArrayList와 LinkedList의 차이는 ArrayList는 데이터를 중간에 넣고 뺄 때
데이터가 큰경우 앞으로밀리고 당겨지기 때문에 부담이 크지만
LinkedList는 데이터의 주소값을 가지고있어서 데이터를 넣고 뺄 때 부담이 적다.
반대로 데이터 전체를 출력할경우는 Array리스트는 순서대로 출력을 해서 부담이 적지만 LinkedList는 데이터주소를 찾고 접근해야 하기때문에 일일이 찾아가야해서 부담이 있다. 상황에 맞게 장점을 이용할 수 있는 클래스를 이용하면 된다.
# ArrayList나 Vector 같이 배열을 이용한 자료구조는 데이터를 읽어오고 저장하는 데는 효율이 좋지만, 용량을 변경해야할 경우엔 새로운 배열을 생성한 후 기존의 배열로부터 새로 생성된 배열로 데이터를 복사해야하기 때문에 효율이 상당히 떨어진다. 따라서 처음에 인스턴스를 생성할 때, 저장할 데이터의 개수를 잘 고려하여 충분한 용량의 인스턴스를 생성하는 것이 좋다.
▶ Set
- 집합
- 자료의 순서가 없고, 중복이 되지 않는다.
- 자료가 정렬되지 않으며, 중복된 요소가 발생되지 못하도록 관리한다.
- Set 구조를 사용하기 위해서 서브 클래스 중 하나의 객체를 생성한다.
HashSet<String> h1=new HashSet<String>(); --- > 객체 생성
h1.add("one");
h1.add("two");
h1.add("three");
h1.add("four");
h1.add("one"); ---> h1.add(데이터) 데이터를 추가한다.
h1.size() ---> h1객체의 크기를 가져온다. 데이터의 크기가 5지만
one이 2개로 하나는 무시되어 4가된것을 확인 할 수 있다.
System.out.println(h1.contains("one")); ---> h1.contains(데이터) 해당 데이터가
포함 되어있는지 boolean으로 반환한다.
Iterator i1 = h1.iterator(); ---> HashSet의 객체 h1은 순서가 없으므로 Iterator클래스의 도움을받아 위 예제와 같이 출력을 할 수 있다. Iterator 메서드 hasNext는 반환값이 boolean으로 다음값이 있나없나를 확인해주고 next는 하나하나씩 값을 반환해준다.
▶Map
- key, value 한쌍으로 데이터를 저장
( 사전 -단어(key)를 이용해서 뜻(데이터)을 검색)
- key 값을 이용해서 데이터를 찾으며, 순서가 없다.
- key값은 중복이 안된다. value값을 중복이 된다.
- Map인터페이스를 상속받고 있는 클래스는 대표적으로 hashMap이 있다.
위는 로그인을 할 때 HashMap을통해 키와 밸류값이 맞는지 확인하는 예제이다.
'Foundation > - Java' 카테고리의 다른 글
유용한 클래스(StringBuffer, Random)(2) (0) | 2017.08.25 |
---|---|
유용한 클래스(String class)(1) (0) | 2017.08.22 |
유용한 클래스(Object class) (0) | 2017.08.21 |
예외처리 (1) | 2017.08.17 |
추상클래스, 인터페이스, 내부클래스 (0) | 2017.08.15 |