I'm making a simple plugin that will keep track of player kills, deaths and more. I really wanted to minimize IO calls to make it faster however I came to an issue I'm not sure how to approach. Until now I was using Maps to store all the data with UUID and Integer. But now I need to sort this data for leaderboards and stuff. My first idea was to use List<Map.Entry<>> instead of Map and sort that every few minutes or so on the async thread. However it was kindof non-efficient with Map.Entry<>, like just adding a single kill would have me iterate every object in the list to find the correct Entry. My second idea was to have a list of custom Objects that store all of the data, and then a got a third idea which is to have a LinkedHashMap, and my last idea which was to have a Map with the data, and then have Lists of UUIDs for the top leaderboards. I feel like the last option is the best, but I'm not sure, maybe all of these are terrible. What should I do?