...this question comes up so often you'd think they'd just figure out that the
chaining of streams is somewhat difficult and either make helpers to create various
combinations or rethink the whole thing
Java is indeed very workmanlike. Straightforward, predictable, reliable.
My observation is that the Java standard libraries (packages) are like a highly skilled and conscientious C programmer trying to write OOP. The don't want to cut off too much power from you. And that means you have to specify everything - exactly what kind of list do you want? In scripting languages you don't, because most of the time it really doesn't matter.
(BTW: If you read some of the source, it is often written in a C-like style rather than Java-like).
The low-level style of libraries is at least half the reason Java has lost out to Python/Ruby etc. But also for its wins.
Java is indeed very workmanlike. Straightforward, predictable, reliable.
My observation is that the Java standard libraries (packages) are like a highly skilled and conscientious C programmer trying to write OOP. The don't want to cut off too much power from you. And that means you have to specify everything - exactly what kind of list do you want? In scripting languages you don't, because most of the time it really doesn't matter. (BTW: If you read some of the source, it is often written in a C-like style rather than Java-like).
The low-level style of libraries is at least half the reason Java has lost out to Python/Ruby etc. But also for its wins.