LONGEPASS
Q105.

一Java 程式片段如下,執行後下列何者為其輸出?電腦軟體設計(JAVA) 乙級 Java 第 105 題 題目 圖片

電腦軟體設計(JAVA) · 乙級 · Java · Q105

難易度分析

3 / 5

本題考查對 Java 集合框架中特定方法行為的精確理解,特別是區分單一物件移除與批量移除的差異。由於涉及方法多載的陷阱,且需區分回傳值與物件狀態的輸出,增加了分析難度。

正確答案:②[A, B, C, D]

② [A, B, C, D]:list1.remove(list2) 呼叫的是 remove(Object) 方法,會在 list1 中尋找等於 list2(即 ["A","B"])的元素。由於 list1 的元素皆為字串,找不到相符者,故 不移除任何元素,list1 仍維持 [A, B, C, D]。

錯誤選項解析

  • ① [C,D]:此輸出假設 remove() 會移除 list2 中包含的元素(A、B),但實際上 remove(Object) 是尋找與傳入物件 equals 相符的單一元素,而非批量移除。
  • ③ true:remove() 的回傳值是 boolean(表示是否成功移除),但題目 println(list1) 印出的是 list1 物件本身,而非 remove 的回傳值。
  • ④ false:同上,println 印出的是 list1 的內容,而非 remove 方法的 boolean 回傳值。
Learning Tip

"此題核心考點為 ArrayList.remove() 的多載行為:傳入 int 時呼叫 remove(int index) 依索引刪除;傳入 Object 時呼叫 remove(Object o) 依內容刪除。常見陷阱是將 remove(list2) 誤認為 removeAll(list2),後者才會批量移除 list2 中包含的所有元素。實務上若需移除多個元素,應使用 removeAll() 方法。"

學員答題分佈

①[C,D]0%
②[A, B, C, D]0%
③true0%
④false0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目