My understanding is as follows:
- the toList() variant always creates a new list so is suitable where copy semantics is in play (the original list will never be affected as the new list is returned by this method)
- the asList() is used in places where the original list would be desirable to use (e.g. maybe for modify semantics operations) but some kind of ordering is required (e.g. no point in sorting a vanilla set or map as the original collection is inherently unordered)
Perhaps the correct approach would have been to not provide things like sort (modify semantics) on collection but only on ordered collections (e.g. List, Queue & LinkedHashSet) and require the user to use toList(), toOrderedSet(), etc. explicitly. Pity Java doesn't have OrderedSet etc. instead of just SortedSet.