티스토리 뷰

Given the code fragment:

import java.util.ArrayList;
public class List63 {
public static void main(String[] args) {
ArrayList points = new ArrayList<>();
points.add(1);
points.add(2);
points.add(3);
points.add(4);
points.add(null);
points.remove(2);
points.remove(null);
System.out.println(points);
}
}

What is the result?

A. A NullPointerException is thrown at runtime.

B. [1,2,4]

C. [1,2,4,null]

D. [1,3,4,null]

E. [1,3,4]

F. Compilation fails.

 

정답: B

해설:

아래와 같이 찍어보면 이해가 쉽다.

ArrayList points = new ArrayList<>();
points.add(1);
points.add(2);
points.add(3);
points.add(4);
points.add(null);
System.out.println(points);
points.remove(2);
System.out.println(points);
points.remove(null);
System.out.println(points);

[1, 2, 3, 4, null]
[1, 2, 4, null]
[1, 2, 4]

즉 첫번째는 ArrayList에 add한거 그대로 찍으면 나오는거고 [1, 2, 3, 4, null] 

두번째는 2번째 인덱스(즉, 3)을 삭제하고 좌측으로 미니 [1, 2, 4, null] 출력.

세번째는 null Object를 삭제하니 [1, 2, 4] 가 찍힌다.

 

참고:

자바 remove 메소드는 아래와 같이 파라미터로 index를 받는게 있고 Object를 받는 것에 따라 2가지 메소드가 있다.

파라미터로 index를 받는 경우

Integer java.util.ArrayList.remove(int index)

  • removepublic E remove(int index)

    Removes the element at the specified position in this list. Shifts any subsequent elements to the left (subtracts one from their indices).

    Specified by:remove in interface List<E>Overrides:remove in class AbstractList<E>Parameters:index - the index of the element to be removedReturns:the element that was removed from the listThrows:IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())

 

파라미터로 Object를 받는 경우

boolean java.util.ArrayList.remove(Object o)

  • removepublic boolean remove(Object o)

    Removes the first occurrence of the specified element from this list, if it is present. If the list does not contain the element, it is unchanged. More formally, removes the element with the lowest index i such that (o==null ? get(i)==null : o.equals(get(i))) (if such an element exists). Returns true if this list contained the specified element (or equivalently, if this list changed as a result of the call).

    Specified by:remove in interface Collection<E>Specified by:remove in interface List<E>Overrides:remove in class AbstractCollection<E>Parameters:o - element to be removed from this list, if presentReturns:true if this list contained the specified element
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함