Имеются такие данные, как: пользователь, идентификатор библиотеки, идентификатор книги, год
1,10, 100,2000
2,10, 100,2000
3,10, 100,2000
2,10, 200,2000
3,10, 200,2000
1,10, 200,2000
Я пытался сохранить их с помощью TreeMap, но вторая группа перезаписала первое, какие-либо предложения?
TreeMap<Integer, Integer> bookMap = new TreeMap<Integer, Integer>();
TreeMap<Integer, TreeMap<Integer, Integer>> libraryMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>> UserMap = new TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>>();
bookMap.put(100, 2000);
libraryMap.put(10,bookMap);
UserMap.put(1,libraryMap);
UserMap.put(2,libraryMap);
UserMap.put(3,libraryMap);
bookMap = new TreeMap<Integer, Integer>();
bookMap.put(200, 2000);
libraryMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
libraryMap.put(10,bookMap);
UserMap.put(1,libraryMap);
UserMap.put(2,libraryMap);
UserMap.put(3,libraryMap);
Решение № 1 все еще использует только карты, но я думаю, что это решение займет много времени и потребит больше памяти?
TreeMap<Integer, Integer> bookMap = new TreeMap<Integer, Integer>();
TreeMap<Integer, TreeMap<Integer, Integer>> libraryMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>> UserMap = new TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>>();
bookMap.put(100, 2000);
bookMap.put(300, 2003);
libraryMap.put(10,bookMap);
UserMap.put(1,libraryMap);
UserMap.put(2,libraryMap);
UserMap.put(3,libraryMap);
int userID = 1;
int libraryID =10;
if (UserMap.containsKey(userID))
{
if ( UserMap.get(userID).containsKey(libraryID))
{
TreeMap<Integer, Integer> storedBookMap = UserMap.get(userID).get(libraryID);
bookMap= new TreeMap<Integer, Integer>();
bookMap.putAll(storedBookMap);
bookMap.put(200, 2000);
libraryMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
libraryMap.put(libraryID,bookMap);
UserMap.put(userID,libraryMap);
}
}