Java 树映射值被覆盖
我有一个树形图,其中字符串作为键,整数数组列表作为值。我向树映射添加了两个值。当我向树映射添加第一个值时,它是正确的。当我添加第二个值时,与第一个键关联的值将发生更改。两个键都指向同一个arraylistJava 树映射值被覆盖,java,treemap,Java,Treemap,我有一个树形图,其中字符串作为键,整数数组列表作为值。我向树映射添加了两个值。当我向树映射添加第一个值时,它是正确的。当我添加第二个值时,与第一个键关联的值将发生更改。两个键都指向同一个arraylist while (resultSet.next()) { firstName = resultSet.getString(1); lastName = resultSet.getString(2); score
while (resultSet.next()) {
firstName = resultSet.getString(1);
lastName = resultSet.getString(2);
scores.add(Integer.parseInt(resultSet.getString(4)));
while (resultSet.next()) {
String firstName1 = resultSet.getString(1);
String lastName1 = resultSet.getString(2);
if (firstName1.equalsIgnoreCase(firstName) && lastName1.equalsIgnoreCase(lastName)) {
scores.add(Integer.parseInt(resultSet.getString(4)));
} else {
resultSet.previous();
break;
}
}
if (!studentScores.containsKey(firstName + lastName)) {
studentScores.put(firstName + lastName, scores);
}
for (int i = 0; i < scores.size(); i++) {
scores.remove(i);
}
}
while(resultSet.next()){
firstName=resultSet.getString(1);
lastName=resultSet.getString(2);
scores.add(Integer.parseInt(resultSet.getString(4));
while(resultSet.next()){
String firstName1=resultSet.getString(1);
String lastName1=resultSet.getString(2);
if(firstName1.equalsIgnoreCase(firstName)和&lastName1.equalsIgnoreCase(lastName)){
scores.add(Integer.parseInt(resultSet.getString(4));
}否则{
resultSet.previous();
打破
}
}
如果(!studentScores.containsKey(名字+姓氏)){
学生分数。输入(名字+姓氏,分数);
}
对于(int i=0;i
当您为每个firstName+lastName组合添加并删除相同的数组列表时,值将被替换
用
score=new ArrayList()替换for循环
应该可以解决这个问题。您能提供最简单的代码和演示问题的最小源数据集吗?例如,如果数据库内容没有导致问题,请删除它。如何实际调试它。1)resultSet.previous()有什么意义代码>?2) 而不是从分数中删除所有项目doscores=new ArrayList()代码>我删除了部分代码。很抱歉:)我不认为可以进一步删除任何代码,因为更改树映射涉及到所有内容:)如果您的键共享相同的数组列表,那么对该列表的修改将影响两个键。