- Let’s say the List b is a LinkedList.
- Let’s say the List a is also a LinkedList.
Question:
- How do I append these list in constant time?
It is possible, because LinkedList is presumably a doubly linked list (otherwise it couldn’t implement the Deque interface). And appending doubly linked list is a 0(1) operation.
The addAll method doesn’t run in constant time.
Question:
- How do I transform a LinkedHashSet into a list in constant time?
It is also presumably possible because LinkedHashSet “maintains a doubly-linked list running through all of its entries”.
Your assumptions are based on no encapsulation – i.e. that the
LinkedHashSetis willing to expose its internalLinkedListto the outside world, when I suspect it isn’t.Likewise joining two linked lists – I don’t know offhand whether each node knows which list it’s in, but that’s certainly a possibility which would scupper your constant-time appending. Even if they don’t, as soon as you attach the head of one list to the tail of the other, you end up with problems – you’ve got two lists both referring to the same data, which would have some odd consequences.
In other words, both of these operations are feasible in a computer science sense, and you could build your own implementations to support them, but that doesn’t mean the Java API exposes its internals in a way which enables those operations.