Why is ClassLoader\'s cache checked in ascending sequence while class-loading befalls in descending sequence?
It is purely a matter of efficiency. If you forget about the cache, the order of classloading ensures that Java system classes always take precedence over application classes and that a class can only be loaded by one classloader in a chain. So there is no class that is in more than one cache and so the order of searching the caches makes no functional difference.
In other words, you could search the bootloader cache followed by the extension classloader cache followed by the system classloader cache and then start trying to load the classes and the end result would be exactly the same. To do this would require an extra API to search for a loaded class and would bring little benefit as searching a cache is a very quick operation.
Note that classes can be loaded by more than one classloader, but not if they are in a loader->parent chain.