В следующем коде,Handling Карты Карты в Java
Map<String,Map<String,Integer>> one_index_1 = new HashMap<String,Map<String,Integer>>();
Map<String,Integer> term_index_1 = new HashMap<String,Integer>();
term_index_1.put("B", 1);
term_index_1.put("C", 1);
term_index_1.put("D", 1);
term_index_1.put("E", 1);
one_index_1.put("A", term_index_1);
term_index_1.clear();
term_index_1.put("A", 1);
term_index_1.put("C", 0);
term_index_1.put("D", 1);
term_index_1.put("E", 1);
one_index_1.put("B", term_index_1);
System.out.println("One index for A: " + one_index_1.get("A"));
System.out.println("One index for B: " + one_index_1.get("B"));
Я получаю выход следующим образом:
One index for A: {A=1, C=0, D=1, E=1}
One index for B: {A=1, C=0, D=1, E=1}
где индекс A становится модифицирован при вставке значения B. Без используя другую переменную карты, могу ли я как-то сохранить значения для карты, чтобы получить выход вроде:
One index for A: {B=1, C=1, D=1, E=1}
One index for B: {A=1, C=0, D=1, E=1}
Вы меняете объект, на который ссылаются два других объекта, его изменение повлияет на них обоих. Я думаю, для этого у вас должны быть две разные карты. – Maroun