Prev Next

Java / Java 21 Collection Framework features Interview questions

What happens when you call reversed() on an immutable List returned by List.of()?

It works fine and returns a reverse-ordered view - reversed() is a read operation, so it's fully supported even on immutable lists, since flipping the read direction doesn't require modifying the underlying list.

List<Integer> frozen = List.of(1, 2, 3);
List<Integer> rev = frozen.reversed(); // [3, 2, 1], also immutable

The returned view is itself immutable too - calling a mutating method like addFirst() on the reversed view throws UnsupportedOperationException, exactly as it would on the original List.of(...) instance.

So the immutability of the source list carries through to its reversed view; you get a read-only "reverse lens" on the same unmodifiable data, not a way to sneak around the immutability.

Calling reversed() on an immutable List.of() result:
Calling addFirst() on the reversed view of an immutable list:

More Related questions...

What is the Sequenced Collections feature introduced in Java 21? What is the SequencedCollection interface? What is the SequencedSet interface? What is the SequencedMap interface? What are the new methods added by the SequencedCollection interface? What is the purpose of the reversed() method in Java 21 collections? Define encounter order in the context of Sequenced Collections? What are getFirst() and getLast() used for? What are addFirst() and addLast() used for? What are removeFirst() and removeLast() used for? List the collection classes that implement SequencedCollection in Java 21? List the collection classes that implement SequencedSet in Java 21? List the collection classes that implement SequencedMap in Java 21? What are firstEntry() and lastEntry() in SequencedMap? What are putFirst() and putLast() in SequencedMap? What are pollFirstEntry() and pollLastEntry()? Describe the sequencedKeySet(), sequencedValues(), and sequencedEntrySet() methods? How do you use getFirst() and getLast() on an ArrayList in Java 21? How do you apply reversed() to a List in Java 21? How do you use putFirst() on a LinkedHashMap? Why was the Sequenced Collections API introduced in Java 21? Why doesn't HashSet implement SequencedSet? Why doesn't HashMap implement SequencedMap? How does SequencedSet differ from a plain LinkedHashSet used before Java 21? How does TreeSet implement SequencedSet given its natural ordering? How does TreeMap support SequencedMap given its comparator-based ordering? What is the difference between SequencedCollection and List? What is the difference between SequencedSet and NavigableSet? What is the difference between List.reversed() and Collections.reverse()? What is the difference between removeFirst()/removeLast() on SequencedCollection and on Deque? When should you choose SequencedMap over a regular Map? When would you choose getFirst() over get(0) on a List? What happens when you call getFirst() on an empty SequencedCollection? What happens when you call reversed() on an immutable List returned by List.of()? What happens when you modify the original collection after calling reversed() on it? How is the encounter order of a LinkedHashSet determined when using SequencedSet methods? How does LinkedHashMap's access-order mode interact with SequencedMap methods? Why doesn't Set.of() return a SequencedSet? Which is better and why: getFirst() or peekFirst() on an ArrayDeque? How can you optimize iteration and access using SequencedCollection methods instead of manual indexing? How can you optimize a producer-consumer pattern using ArrayDeque's sequenced methods? How do you troubleshoot a NoSuchElementException thrown from a sequenced collection method? How do you troubleshoot UnsupportedOperationException when calling addFirst() on an unmodifiable list? Explain the internal working of the reversed() view for a List? Explain the lifecycle of a view returned by SequencedMap.reversed()? Explain the execution flow of putFirst() on a LinkedHashMap? Explain the internal working of the retrofit strategy used to add Sequenced interfaces without breaking existing implementations? Why is Deque now classified as a SequencedCollection? What is the difference between SequencedCollection and the Queue interface? Explain how record patterns in Java 21 complement processing elements of sequenced collections?
Show more question and Answers...


Comments & Discussions