Given the code fragment:



List<String> names = new ArrayList<>();
names.add("Robb");
names.add("Bran");
names.add("Rick");
names.add("Bran");
if (names.remove("Bran")) {
    names.remove("Jon");
}
System.out.println(names);

What is the result?

A.

[Robb, Rick, Bran]

B.

[Robb, Rick]

C.

[Robb, Bran, Rick, Bran]

D. An exception is thrown at runtime.

題解

List集合允許擁有多個邏輯相同的元素,remove方法會從頭尋找第一個符合的元素,並將其移除。若傳入remove方法的參數為要移除的物件,則會回傳該物件是否有在集合裡面;若傳入remove方法的參數為索引值,則會回傳索引值對應被移除的物件。

在這題中,要移除一個「Bran」字串物件和一個「Jon」字串物件,但「Jon」字串物件本來就不存在於集合中,因此實際上只會移除一個「Bran」字串物件。