[Tip] 자바의 remove()

2024. 5. 10. 18:40정리

"사실 Tip이라기 보다는 나 같은 바보를 위한 글이다.

어쩌면 누군가는 나처럼 생각했을 수도 있으니까."

 

 

ArrayList에는 remove()가 있어 특정 값을 삭제할 수 있다.

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test01 {
	public static void main(String[] args) {
		
		List<Integer> list=new ArrayList<>();
		
		list.add(10);
		list.add(100);
		list.add(4);
		list.add(50);
		list.add(20);
		list.add(1);
		
		System.out.println(Arrays.toString(list.stream().mapToInt(z->z).toArray()));
		//[10, 100, 4, 50, 20, 1]
		
        
		list.remove(4);
		
		System.out.println(Arrays.toString(list.stream().mapToInt(z->z).toArray()));
		//[10, 100, 4, 50, 1]
	}
}

 

아니다.

특정값 4를 지우고 싶었지만, 해당 remove()는 20을 삭제한다.

remove()는 index를 인자값으로 받기 때문이다. 

검색 끝에 index 뿐만 아니라 Object 타입의 값도 받는다는 걸 알게 됐다.

 

따라서

원하는 특정값을 삭제하기 위해서는

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test01 {
	public static void main(String[] args) {
		
		List<Integer> list=new ArrayList<>();
		
		list.add(10);
		list.add(100);
		list.add(4);
		list.add(50);
		list.add(20);
		list.add(1);
		
		System.out.println(Arrays.toString(list.stream().mapToInt(z->z).toArray()));
		//[10, 100, 4, 50, 20, 1]
		
		
		list.remove(Integer.valueOf(4));
		//list.remove(new Integer(4)); 
		
		System.out.println(Arrays.toString(list.stream().mapToInt(z->z).toArray()));
		//[10, 100, 50, 20, 1]
	}
}

 

주석문으로 처리한 list.remove(new Integer(4)); 역시 특정값을 전달할 수 있다.

하나만 삭제할 때는 위와 같은 방법을 이용하면 간단하지만, 만약 삭제하고 싶은 특정값이 여러개 있다면 상황이 달라진다. 위와 같은 방법을 사용한다면 4가 두 개 있는 상황에서 한 개만 삭제될 것이다. 

따라서 

 

(여러 방법이 있겠지만?? 제일 간단한 방법?!)

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class test01 {
	public static void main(String[] args) {
		
		List<Integer> list=new ArrayList<>();
		
		list.add(10);
		list.add(100);
		list.add(4);
		list.add(50);
		list.add(20);
		list.add(1);
		list.add(4);
		
		System.out.println(Arrays.toString(list.stream().mapToInt(z->z).toArray()));
		//[10, 100, 4, 50, 20, 1, 4]
		
		
		list.removeIf(x->x == 4);
		
		System.out.println(Arrays.toString(list.stream().mapToInt(z->z).toArray()));
		//[10, 100, 50, 20, 1]
	}
}

 

list.removeIf(x->x == 4);

람다식을 이용해 간단하게 list에 있는 모든 4를 삭제할 수 있다.

이때도 당연히 4 즉 변수 x의 타입은 Integer이다.

코딩테스트 문제를 풀면 좋은 게, 이렇게 당연하다고(4 넣으면 4가 지워질 줄 알았지...) 생각했던 지식을 부숴 준다.

언제나 그렇듯이 자연스레 해결책을 찾게 되고, 그러다보면 더 많은 지식을 쌓게 되고, 이렇게 기억은 기록으로 남게 된다.

'정리' 카테고리의 다른 글

[Tip] 자바의 Integer.parseInt()  (0) 2024.06.28
[Tip] 자바의 substring()  (0) 2024.05.09
[Regex] 정규 표현식 정리  (0) 2024.05.04
[Git] 명령어 정리  (4) 2024.05.02