튜터링 10일 차에는 제네릭과 컬렉션의 개념 , Iterator , Vector , ArrayList , HashMap , Collections을 배웠다.
C++에서 살짝 맛보기(?) 느낌으로 공부를 했었는데 자바에서 다시 보니 반가운 느낌이 들었다.
▷ 제네릭과 컬렉션
▷ Iterator
▷ Vector
▷ HashMap
- 제네릭과 컬렉션
제네릭이란 우리가 무언가를 선언할 때 직접적으로 타입을 선언해 주어야 했지만 제네릭은 타입을 여러 종류를 쓸 수 있다. 즉, 일반화시키는 도구라고 정의하면 된다.
컬렉션은 C++에서 Container과 비슷한 개념이라고 생각하면 된다. 크기 제한이 없는 배열로서 사용할 수 있다는 장점이 있고 단점으로는 데이터의 크기를 예측할 수 없는 응용프로그램에서 사용하기 어렵다
- Iterator
컬렉션을 순차적으로 탐색하는데 쓰인다.
ex)
Iterator <Integer> it = v.iterator();
- Vector
벡터는 자동적으로 배열의 크기를 조절해 준다.
요소 삽입시 그 자리에 존재했던 데이터를 뒤로 1칸씩 이동시킨다.
삽입, 삭제, 이동이 자유롭다.
Vector <클래스명> Vector <클래스명> 이름 = new Vector <클래스명>();
Vector 제네릭을 사용하려면
import java.util.Vector; 를 선언해야 한다.
→ 벡터 제네릭 컬렉션 메서드들이다.
- ArrayList
ArrayList는 Vector보다 속도가 빨라 단일 스레드 응용에 더욱 효과적이다.
다수의 스레드가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 데이터가 훼손될 우려가 있다.
ArrayList 제네릭을 사용하려면
import java.util.*;을 선언해야 한다.
ArrayList 제네릭의 선언 방법은 Vector와 비슷하다
ArrayList <클래스명> 이름 = new ArrayList <클래스명>();
- HashMap
HashMap은 C++에서 map과 같은 역할을 하는 제네릭 컬렉션인 것 같다.
HashMap은 키, 값으로 구성되어 있는데 값을 출력하기 위해서는 키가 필요하다.
요소의 삽입, 삭제 , 검색 시간이 매우 빠르다
인덱스로 요소에 접근이 불가능하다.
Keyset을 이용하여 key값을 얻은 뒤 값으로 접근할 수 있다.
- Collections
Collections 클래스의 메서드는 모두 static 타입이므로 Collections클래스를 생성할 필요가 없다.
메소드 | |
sort() | 컬렉션에 포함된 요소들의 정렬 |
reverse() | 요소를 반대 순으로 정렬 |
max(),min() | 요소들의 최대값과 최소값 찾아내기 |
binarySearch() | 이진 검색 |
이번 튜터링을 마치고 한번에 진도 나가는 양이 점점 많아지는 것 같아 살짝 부담스럽다...
'JAVA' 카테고리의 다른 글
[JAVA] 마지막 튜터링 (2021- 08-11 , 2021-08-13) (0) | 2021.08.19 |
---|---|
[JAVA] 튜터링 11일차!(2021-08-09) (0) | 2021.08.11 |
[JAVA] 튜터링 9일차!(2021-08-02) (0) | 2021.08.03 |
[JAVA] 튜터링 8일차!!(2021-07-30) (0) | 2021.08.03 |
[JAVA] 공부 7일차! (2021-07-28) (0) | 2021.07.29 |