⑴ ADD 값추가
// 마지막에 값 추가
add(E value)
// 중간에 값 추가
add(int index, E value)
예제
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] arr = {"a", "b", "c", "d"};
List<String> list = new ArrayList<>(Arrays.asList(arr));
// index 2에 새로운 값 추가
list.add(2, "0");
// index 3에 새로운 값 추가
list.add(3, "0");
System.out.println(list); // [a, b, 0, 1, c, d]
// 다른 list를 중간값으로 추가할수도 있음
List<String> list2 = new ArrayList([2,3]);
list.add(4, list2);
System.out.println(list); // [a, b, 0, 1, 2, 3, c, d]
}
}
⑵ 값에 해당하는 index 반환
- value와 같은 객체(요소 값)일 경우 i(위치) 반환
- 일치하는 것이 없을 경우 return -1;
//요소의 위치를 반환하는 메소드
indexOf(Object value)
예제
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] arr = {"a", "b", "c", "d"};
List<String> list = new ArrayList<>(Arrays.asList(arr));
System.out.println(list.indexOf("a")); // 0
System.out.println(list.indexOf("e")); // -1
}
}
에러 메시지
❗ java.lang.UnsupportedOperationException
: Arrays.asList로 담은 값에 add로 추가하려고 했을 때 생긴 오류
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.AbstractList.add(AbstractList.java:153)
at java.base/java.util.AbstractList.add(AbstractList.java:111)
at sec02.exam01_arraylist.ArraysAsListExample.main(ArraysAsListExample.java:13)
// Arrays.asList로 생성한 애들은 고정이라서
List<String> list1 = Arrays.asList("a", "b", "c");
// 값이 추가도 안되고
list1.add("d");
// 삭제도 안됨
list1.remove(0);
⑶ 특정 값 삭제
//특정 index의 요소를 삭제하는 메소드
@SuppressWarnings("unchecked")
@Override
public E remove(int index){
if(index>=size|| index<0){
throw new IndexOutOfBoundsException();
}
E element = (E) array[index]; //삭제될 요소를 반환하기 위해 임시로 담아둠
array[index] = null;
//삭제한 요소의 뒤에 있는 모든 요소들을 한칸씩 당겨옴
for(int i=index;i<size;i++){
array[i] =array[i+1];
array[i+1]=null;
}
size--;
resize();
return element;
}
//특정 value를 리스트에서 찾아 삭제하는 메소드
@Override
public boolean remove(Object value){
//삭제하고자 하는 요소의 인덱스 찾기
int index = indexOf(value);
//-1이라면 array에 요소가 없다는 의미이므로 false반환
if(index ==-1){
return false;
}
//index위치에 있는 요소를 삭제
remove(index);
return true;
}