在下面的代码中,
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"));
Run Code Online (Sandbox Code Playgroud)
我得到的输出如下:
One index for A: {A=1, C=0, D=1, E=1}
One index for B: {A=1, C=0, D=1, E=1}
Run Code Online (Sandbox Code Playgroud)
其中 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}
Run Code Online (Sandbox Code Playgroud)
您必须为每个键使用不同的映射,否则您将在两个键上编辑完全相同的映射,并且显然,如果您修改一个键,则更改将反映在另一个键上,因为它们是同一对象。尝试这个:
Map<String, Map<String, Integer>> one_index = new HashMap<String, Map<String, Integer>>();
Map<String, Integer> term_index = new HashMap<String, Integer>();
term_index.put("B", 1);
term_index.put("C", 1);
term_index.put("D", 1);
term_index.put("E", 1);
one_index.put("A", term_index);
term_index = new HashMap<String, Integer>();
term_index.put("A", 1);
term_index.put("C", 0);
term_index.put("D", 1);
term_index.put("E", 1);
one_index.put("B", term_index);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7729 次 |
| 最近记录: |