카테고리 없음

List 자주사용하는 메소드

못지(Motji) 2023. 12. 15. 02:31

⑴ 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;
    }