자바에서는 자료구조와 알고리즘을 구조화하여 클래스로 구현해놓은것이다.
자바의 인터페이스를 사용해 구현된다.
구조상의 차이로 Map인터페이스만 별도로 정의된다.
List 인터페이스를 구현한 클래스이며 컬렉션에서 가장 많이 사용된다. 기존 vector를 개선 구현한 것이다. Vector가 있지만 기존 소스와 호환성을 위해 남겨둔 것이므로 ArrayList를 사용하자!
ArrayList는 Objet배열을 이용한다. ArrayList는 벡터처럼 초과시 더 큰 배열을 생성해 새로 사용한다.또한 중요한 점은 중간 객체를 제거하면 바로 뒤부터 마지막 객체까지 모두 앞으로 idx가 1씩 앞당겨진다. 따라서 삭제연산이 많을 경우에는 LinkedList가 효율이 좋다.(읽는 접근 시간은 느리다.)
Iterator 인터페이스는 컬렉션에 저장된 요소를 읽어오는 방법이다.
boolean hasNext() : 읽어올 요소가 있는지 확인
Object next() : 다음 요소 읽어오기(hasNext()로 확인 후 사용 안전)
void remove() : 읽어온 요소 삭제(next()가 선행되어야함)
Iterator<String> iterator = drinks.iterator();
while(iterator.hasNext()){
String str = iterator.next();
if(str.equals("soju")){
iterator.remove();
}
}
Map 인터페이스는 키와 값으로 구성된 Entry 객체를 저장한다. 해싱을 사용해 방대한 양의 데이터에서도 성능이 뛰어나다. Hashtable : Vector | HashMap : ArrayList의 관계이므로 HashMap을 사용하자.
V put(k key, V value) : key와 value저장
void clear() : 모든 데이터 삭제
V remove(Obejct key) : key와 일치하는 데이터 삭제
boolean remove(Object key, Obejct value) : key와 value가 동시에 일치하는 데이터 삭제
V replae(k key, V oldValue, V newValue) :key와 oldValue가 일치하면 newValue로 변경
V getOrDefault(Object key, V defaultValue) : key와 맵핑된 value값을 반환하고 없으면 defaultValue값을 반환
Set keySet( ) : 모든 key 값을 가진 Set 데이터를 반환합니다.
Collection values( ) : 모든 value 값을 가진 Collection 데이터를 반환합니다.
이외에 empty나 size get은 ArrayList와 동일하게 사용하면 된다.
출처 : TCP SCHOOL
kai6666벨로그
정보 감사합니다.