2. Rob Gordon in "High Fidelity"

Played by: John Cusack

Gets the girl?: Yes

Rob does quite a few not-very-nice things, but he's clearly a romantic trying to play cynic. He learns his lessons and becomes even nicer by the end.