Machine-translated by Google. Questions are authored in English.
Top

Discussion

What will be the output of the program?

import java.util.*;

public class Listing97
{
    public static void main(String[] args)
    {
        List<String> queue = new ArrayList<String>(
            Arrays.asList("a", "b", "c"));
        List<String> done = new ArrayList<String>(queue);
        queue.removeAll(done);
        System.out.println(
            queue.isEmpty() + " " + done.size() + " " + queue.size());
    }
}

  • A.The program prints true 3 0
  • B.The program prints false 3 3
  • C.The program prints true 3 3
  • D.The program prints true 0 0

Answer: A

removeAll deletes every element that also appears in the argument, and the argument is a copy of the whole list, so everything goes and the queue is empty. It modifies only the receiver, so the copy still holds its 3 elements. An emptied list is still a perfectly good object.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.