Q105.
一Java 程式片段如下,執行後下列何者為其輸出?
電腦軟體設計(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 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!