https://www.machinet.net/tutorial-eng/how-to-use-java-collectors-to-map-for-efficient-mapping