[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 |