티스토리 뷰
컬렉션 프레임워크(Collection Framework)
인스턴스의 참조와 저장을 위해 잘 정의된 클래스들의 구조
List |
순서가 있는 데이터의 집합, 데이터의 중복을 허용한다. |
Set | 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. |
Map | 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합 |
List, Map을 쓰면 여러개의 데이터를 한번에 리턴할 수 있다.
그
러면 반드시 하나의 타입으로만 보낼 수 있나요?
--> 아니다.
여러개의 타입이 들어있는 클래스를 만들면 된다. 하나의 클래스 안에 여러개의 타입들을 만들고 인스턴스를 제네릭 안에 넣어주면 된다.
제네릭(Generic)
< Object Type >으로 정의되는 것인데, 데이터를 저장할 형식을 의미.
제네릭에는 클래스 타입만 들어올 수 있고, 기본형은 넣을 수 없다.
기본형을 한번 감싸서 참조형 변수로 만든 것 → wrapper class
List<Integer> list = new ArrayList<Integer>();
ex. Boolean type의 List를 생성할 때는
List<Boolean> list = new ArrayList<Boolean>();
List는 향상된 for 문을 쓸 수 있다.
다차원배열을 구현하기에는 복잡하다.
- HashMap처럼 데이터를 키와 값의 형태로 저장하는 컬렉션 클래스는 지정해줘야할 타입이 두개이다.
'K'는 Key의 줄이말로 어떤 집단에서 나라고 표현할 수 있는 고유한 값을 말한다.
'V'는 Value의 줄임말로 그 값을 대표하는 것을 말한다.
- K나 V는 임의의 참조형 타입(reference type)을 의미한다.
List/ArrayList는 가변길이를 지원하는 배열
배열은 index의 갯수가 정해지면 절대 수정할 수 없지만, list/ arraylist는 index의 제한이 없는 배열이다.
문법 :
List<String> list = new ArrayList<String>();
--> String type의 인스턴스를 List타입으로 저장하겠다는 의미.
메소드 | 설명 |
void add(Object o) |
객체(element) 또는 컬렉션에 포함된 객체들을 추가한다. |
void add(index, Object element) |
지정된 위치에 객체 또는 컬렉션에 포함된 객체들을 추가한다. |
Object get(Object o) | 지정된 위치(index)에 있는 객체를 반환한다. |
int indexOf(Object o) | 지정된 객체의 위치(index)를 반환한다. |
int lastIndexOf(Object o) | 지정된 객체의 위치(index)를 반환한다. (List의 마지막 요소부터 역방향으로 찾는다.) |
Object remove(int index) | 지정된 위치(index)에 있는 객체를 삭제하고 삭제된 객체를 반환한다. |
Object set(int index, Object element) | 지정된 위치(index)에 객체(element)를 지정한다. |
int size() | Collection에 저장된 객체의 수를 반환한다. |
boolean contains(Object o) | 지정된 객체(o) 가 Collection에 포함되어 있는지 확인한다. |
HashMap<K,V>
- HashMap은 중복키를 지원하지 않는다.(같은 키로 데이터를 집어넣으면, 마지막에 넣은 것으로 덮어씌운다
문법
메소드 |
설명 |
void clear() |
Map의 모든 객체를 삭제한다. |
boolean containsKey(Object key) |
지정된 key객체와 일치하는 Map의 key객체가 있는지 확인한다. |
boolean containsValue(Object value) | 지정된 value객체와 일치하는 Map의 value객체가 있는지 확인한다. |
Object get(Object key) | 지정한 key객체에 대응하는 value객체를 찾아서 반환한다. |
boolean isEmpty() | Map이 비어있는지 확인한다. |
Object put(Object key, Object Value) | Map에 value객체를 key객체에 연결(mapping)하여 저장한다. |
Object remove(Object key) | key객체와 일치하는 key-value 객체를 삭제한다. |
int size() | Map에 저장된 key-value쌍의 개수를 반환한다. |
Iterator
컬렉션 클래스에 대해 iterator() 메서드를 호출하여 Iterator를 얻은 다음 반복문(주로 while문)을 사용해서 컬렉션 클래스의 요소들을 읽어올 수 있다.
메소드 |
설명 |
boolean hasNext() |
읽어올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. |
Object next() |
다음 요소를 읽어온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어올 요소가 있는지 확인하는 것이 안전하다. |
void remove() | next()로 읽어온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야한다. |
ArrayList에서 사용할 수 있고, HashMap에서는 키와 값을 쌍으로 저장하고 있기 때문에 iterator()를 직접 호출할 수 없고, 그대신 keySet()이나 entrySet()과 같은 메서드를 통해서 키와 값을 각각 따로 Set의 형태로 얻어온 후에 다시 iterator()를 호출해야 Iterator를 얻을 수 있다.
1 2 3 4 5 6 7 | List list = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()){ System.out.println(it.next()); } | cs |
iterator는 중간에 있는 데이터를 찾아오기가 어렵고, 반복을 돌리면서 처리를 할 것이다라고 한다면 iterator를 쓰는 것이 좋다!
(실무에서는 거의 공식처럼 사용하고 있다고...)
'프로그래밍 > Java' 카테고리의 다른 글
예외처리, 메소드를 활용한 단어장 만들기 (0) | 2016.01.26 |
---|---|
예외처리 (1) | 2016.01.25 |
[실습문제]가게에서 사과사기 (0) | 2016.01.22 |
클래스와 메소드 (0) | 2016.01.22 |
[실습문제] 사칙연산 계산기 프로그램 (0) | 2016.01.21 |
- Total
- Today
- Yesterday
- 뉴스피드 가져오기
- 메뉴바에 버튼 생성하기
- 게시판 만들기
- ERD
- Relative Layout
- query
- Erwin
- intent
- 쿼리
- activity
- mybatis
- mongo db
- Linear Layout
- MVC
- JSP
- 자바프로그래밍
- jQuery
- 포스팅하기
- 예외처리
- 클래스
- 제이쿼리
- spring
- 메소드
- 글쓰기 버튼
- er다이어그램
- 뒤로가기 버튼
- facebook 연동
- sql
- 배열
- aop
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |