-
[ ArrayList ] get(), remove(), clear(), removeAll(), retainAll() 구현 02JAVA 2022. 12. 7. 10:19728x90
⊙ ArrayList 글 더보기
◆ ArrayList 메서드 직접 구현하기 02
1. 메소드 정리
반환(return) 타입 메서드명 기능 int size() 배열의 사이즈. 즉, 현재 배열에 들어간 요소의 개수 boolean isEmpty() 배열이 비어있으면 true, 값이 하나라도 있으면 false 반환 boolean add(E e) 배열 마지막 요소의 다음 위치에 e를 삽입 void add(int index, E element) 배열 index 위치에 element를 삽입 boolean addAll(Collection c) 매개변수 c의 요소들을 전부 배열에 삽입 boolean addAll(int index, Collection<? extends E> c) 매개변수 c의 요소들을 배열의 index 위치에 모두 삽입 E get(int index) 배열의 index 위치의 요소 반환 boolean remove(Object obj) obj와 일치하는 값인 요소를 배열에서 지우고 지웠으면 true E remove(int index) index 위치에 있는 요소 배열에서 지우고 해당 객체 반환 boolean removeAll(Collection c) c의 값과 일치하는 모든 값을 삭제하면 true 반환 boolean retainAll(Collection<?> c) c의 값과 일치하지 않는 모든 값을 삭제하면 true 반환 void clear() 배열에 있는 요소 모두 삭제 int indexOf(Object obj) obj와 일치하는 요소의 위치 반환. 없으면 -1 반환 int lastIndexOf(Object obj) obj와 일치하는 요소 위치를 뒤에서부터 탐색하여 반환 boolean contains(Object obj) 배열에 obj와 동일한 값이 포함되어 있으면 true, 아니면 false boolean containAll(Collection<?> c) 매개변수 c의 모든 값이 배열에 들어있으면 true, 아니면 false E set(int index, E element) index에 위치에 element를 삽입하고 기존 요소는 반환 Object[] toArray() ArrayList 인스턴스를 일반 배열 타입으로 반환 List<E> subList(int fromIndex, int toIndex) fromIndex부터 toIndex 전까지의 요소를 List 형태로 반환 3. 구현
- get(int index) : 배열의 index 위치인 요소 반환
idxRangeException(index) : 2022.12.05 - [JAVA] - [ ArrayList ] size(), isEmpty(), add(), addAll() 구현 01 참고
public E get(int index) { //index 범위 초과 시 예외처리 idxRangeException(index); E e = (E) list[index]; return e; }- remove(Object obj) : obj와 일치하는 값인 요소를 배열에서 지우고 지웠으면 true
public boolean remove(Object obj) { // TODO 동일 값 중 첫 번째 값 삭제 후 당기기 // 값이 같은 인덱스 찾고 같은 값 있을 때 삭제하고 당겨담기 int idx = indexOf(obj); // indexOf(Object obj) 사용 boolean flag = false; if (idx >= 0) { flag = true; remove(idx); // remove(int index) 사용 } return flag; }- remove(int index) : index 위치에 있는 요소 배열에서 지우고 해당 객체 반환
public E remove(int index) { // TODO 해당 인덱스에 위치한 요소 삭제 후 당기기 //index 범위 초과 시 예외처리 idxRangeException(index); //기존 값 담아서 리턴 E e = (E) list[index]; for (int i = index; i < size - 1; i++) { list[i] = list[i + 1]; } size -= 1; return e; }- removeAll(Collection<?> c) : c의 값과 일치하는 모든 값을 삭제하면 true 반환
☞ retainAll()과 반대
public boolean removeAll(Collection<?> c) { // TODO argument 제공한 컬렉션 내에 들어있는 값과 일치하는 값을 모두 지움 (retainAll 반대) int cnt = 0; int oldSize = size; for (Object obj : c) { if (remove(obj)) cnt++; } return cnt == oldSize - size; }- retainAll(Collection<?> c) : c의 값과 일치하지 않는 모든 값을 삭제하면 true 반환
public boolean retainAll(Collection<?> c) { // TODO argument 제공한 컬렉션 내에 들어있는 값을 제외하고 모두 지워줌 //list 있는 값이 c에 있는지 contains 확인해서 삭제 Object[] newList = new Object[size]; int idx = 0; for (int i = 0; i < size; i++) { if (c.contains(list[i])) newList[idx] = list[i]; idx++; } list = newList; return true; }☞ 더 깔끔하게 remove를 활용하여 지우는 버전
public boolean retainAll(Collection<?> c) { for(int i = 0; i < size; i++) { if(!c.contains(items[i])){ remove(i); } } return true; }- clear() : 배열에 있는 요소 모두 삭제
☞ set으로 기존값 빼고 null 넣어주기
public void clear() { // TODO 값 모두 삭제 for (int i = 0; i < size; i++) { set(i, null); } size = 0; }728x90'JAVA' 카테고리의 다른 글
[ LinkedList ] LinkedList란? (0) 2022.12.09 [ Spring ] 스프링 프레임워크란? (0) 2022.12.09 [ ArrayList ] indexOf(), lastIndexOf(), contains(), set(), toArray(), subList(), containsAll() 구현 03 (0) 2022.12.07 [ ArrayList ] size(), isEmpty(), add(), addAll() 구현 01 (0) 2022.12.05 [ ArrayList ] ArrayList란? (0) 2022.12.05