Streets in Openstreetmap have more detail than I need. For instance, I do not need separate street tracks for each driving direction; instead I just want to show the general path of the street. Example:

OSM linestrings for a street

Simpified linestring(s) (here it is just one, but in case of sidearms would be > 1)
input: collection of linestrings
output: collection of linestrings
simplified lines = f(osm lines)
f = ?
the output is a collection as well, since sidearms should remain available.
How do I programmatically simplify such linestring collections?
Would like to use JTS, NTS, GEOS but not PostGIS if possible.