I haven't used either in a few years, but Java's are trivial to remember:
* List: implemented by ArrayList and LinkedLink
* Set: implemented by HashSet
* Map: implemented by HashMap
All are Collections.
Then it's easy to get immutable versions, synchronized versions, Sorted{Set,Map}s (implemented by Tree{Set,Map}).
They work with Comparator and Iterator in a consistent way.
There is symmetry and unity. I don't even remember the C# analogues, but my recollection is that sometimes they come with an interface, sometimes not, the names are messier, generics are less consistent, and there isn't a unified way to get immutable versions etc.
I don't think C#'s collections were that bad, and probably people here can correct my memory about some of the above, but they weren't as clean, and to me that was a motif throughout the framework. A messy collections API is no big deal really, but when it's the same story for I/O, networking, GUI, etc. . . . (I do think layout was a lot easier in WinForms than Swing though.)
On balance I'd take C#'s rapid evolution over Java's slowness, but what Java got from its conservatism was purity and low cognitive overhead, which as a working programmer was pretty nice.
That said, it'd still be really cool if I could write Rails apps in C# on Linux. With vim. :-)