Difficulty: Easy
Correct Answer: Prints: false, true, false
Explanation:
Introduction / Context:
This question distinguishes between Iterator
, ListIterator
, and collection types. The object returned by new ArrayList().iterator()
is an Iterator
but not a List
and not a ListIterator
.
Given Data / Assumptions:
i
holds the iterator returned from an empty ArrayList
.instanceof
checks are printed as booleans.
Concept / Approach:
An Iterator
is produced by iterator()
. A ListIterator
—which supports bidirectional traversal and index operations—is produced by listIterator()
, not iterator()
. Also, an iterator is not a collection, so it is not a List
.
Step-by-Step Solution:
i instanceof List
→ false. i instanceof Iterator
→ true. i instanceof ListIterator
→ false. Output is false, true, false
.
Verification / Alternative check:
Replace iterator()
with listIterator()
and the third check becomes true for many list implementations.
Why Other Options Are Wrong:
Any claim that List
is true confuses data structures with iterators; claiming ListIterator
is true ignores the specific method used.
Common Pitfalls:
Assuming all list iterators are bidirectional; forgetting distinct factory methods in the collections API.
Final Answer:
Prints: false, true, false
Discussion & Comments