Jeanne,
This was a fun exercise and very challenging. Below is what I came up with. I don't know if it is much more elegant but I finally got it to output what you were looking for.
Hopefully it would be some use to you.
The BiFunction (mergeList) at the beginning of the method is used to merge the lists if there is a duplicate key.