Take a look at XStream. Saves and loads arbitrary objects and object trees. Dead easy to use.
Just design your SaveGame class and let XStream do the annoying work.
It's basicly xml or json definitions of your actual objects. It's not your best choice though, as you lose speed for it to be easily interpreted by humans. It's really just text, which is easy to work with, but slow for machines (only to read/write. Once they're in memory it's no problem).
A different option is to serialize your objects (Kryo is a good one), because it's faster to load. It's also more difficult to edit by hand. Some people dont like their players to fiddle with the safefiles - It's personal preference.
When being productive about making a game, I really can't recommend you to invent everything from the ground up. It's way faster to use something as easy as Kryo or XStream. If you want specific features, or find yourself bored one day you can look into it as practise.