본문 바로가기
Java & JSP

ArrayList에서 특정값 remove

by BeGeek 2016. 5. 21.

ArrayList에서 특정값을 remove할때는 remove 메소드를 사용함.

list에 있는값이 obj일때는 remove(지울값 obj);

import java.util.ArrayList;


public class ArrList2 {

 static ArrayList<String> list = new ArrayList();
 
 public static void main(String[] args) {
  
  list.add("사과");
  list.add("수박");
  list.add("복숭아");
  list.add("바나나");
  
  
  for(String i : list)System.out.print(i + " ");
  System.out.println();
  
  list.remove("수박"); //지울Obj를 직접 지정
  
  for(String i : list)System.out.print(i + " ");
  System.out.println();
  
 }

}

결과출력

사과 수박 복숭아 바나나
사과 복숭아 바나나

위와 같이 "수박"이란 값을 지우기 위해 remove메소드에 파라미터로 전달!

(list안의 값이 String으로 Obj이기 때문. list안의 값이 숫자일때는 주의! 아래 참조)

 

list에 있는 값이 숫자값일때는 주의 필요하다!

remove(지울값의 인덱스번호) 로 그냥 숫자로 던지면 idx번호에 해당하는(0-based) 값이 지워짐

remove((Integer)지울숫자) 로 객체 형태로 던지면 해당 객체값에 해당하는 값이 지워짐

ex> list.remove((Integer)3); //(Integer)로 캐스팅하여 obj형태로 던지면 해당 값이 지워짐

import java.util.ArrayList;


public class ArrList {

 static ArrayList<Integer> list = new ArrayList();
 
 public static void main(String[] args) {
  
  list.add(0);
  list.add(1);
  list.add(3);
  list.add(5);
  list.add(7);
  
  
  for(int i : list)System.out.print(i + " ");
  System.out.println();
  
  list.remove(3); //idx번호에 해당하는 값이remove
  
  for(int i : list)System.out.print(i + " ");
  System.out.println();
  
 }

}
 

출력결과 (인덱스(0-based)가 3인 값 5가 삭제 됨)

0 1 3 5 7
0 1 3 7

위와 같이 list.remove(3);을 했는데 list의 3이란 값이 아닌 인덱스가3(네번째인)인 값 5가 제거 되었다

 

아래와 같이 list.remove((Integer)3); 로 주면 idx가 3인 값이 아니라 지울값 자체가 3이 되므로 3값이 제거 됨.

 import java.util.ArrayList;


public class ArrList {

 static ArrayList<Integer> list = new ArrayList();
 
 public static void main(String[] args) {
  
  list.add(0);
  list.add(1);
  list.add(3);
  list.add(5);
  list.add(7);
  
  
  for(int i : list)System.out.print(i + " ");
  System.out.println();
  
  //list.remove(3); //idx번호에 해당하는 값이remove
  list.remove((Integer)3); //(Integer)로 캐스팅하여 obj형태로 던지면 해당 값이 지워짐
  
  for(int i : list)System.out.print(i + " ");
  System.out.println();
  
 }

}

출력결과 (값 3이 삭제 됨)

0 1 3 5 7
0 1 5 7

 

만약 list가 Integer타입으로 되있을때는 list.get(3); 이런식으로 값을 뺄때 Integer형태로 값이 반환되니

Obj가 되니 참고. ex> boolean a = list.remove(list.get(3)); 빨간색 부분의 리턴값이 Integer 타입이니 boolean remove(Object obj) 메소드가 적용되게 됨

 

이는 ArrayList의 remove메소드의 정의가 아래와 같기 때문!

int remove(int index); //지울값의 인덱스를 인자로 줘서 해당 값을 지우고 해당값을 int형으로 리턴.( 인덱스가 3인 5의 값을 지웠다면 리턴값은 5) 인자로 넘기는 인덱스의 범위가 실제 list의 범위를 벗어나면 IndexOutOfBoundsException 발생.

boolean remove(Object obj); //지울값인 obj를 인자로 줘서 해당값이 list에있고 삭제했으면 true, 해당값이 없으면 false 리턴

댓글