java - 将值添加到其他数组列表后覆盖数组列表中的旧值

标签 java arraylist

我遇到了这个问题,但没有找到任何确切的解释。我在 Debug模式下运行程序,我看到当变量添加到 g_temNodes 数组列表时: g_tempNodes.add(p_dept_cd); ,该变量也会在运行 g_nodes 之前自动添加到 g_nodes 。添加(g_tempNodes); .

请给我一些解决的方法。提前致谢。

我的代码如下。

ArrayList<ArrayList<String>> g_nodes = new ArrayList<ArrayList<String>>();
ArrayList<String> g_tempNodes = new ArrayList<String>();
...
...
private String GetDeptCd(String x_dept_cd, int x_flag) {
...
...
while (p_sql.next()) {
    String p_dept_cd = p_sql.getString("dept_cd");
    if(x_flag == 0){
        g_tempNodes.removeAll(g_tempNodes);
    }
    g_tempNodes.add(p_dept_cd);
    System.out.println("g_tempNodes = "+g_tempNodes);
    g_nodes.add(g_tempNodes);
    System.out.println("g_nodes = "+g_nodes);
    GetDeptCd(p_dept_cd, 1);
    g_tempNodes.remove(g_tempNodes.size()-1);
}
return null;
}

这是控制台中的输出。

g_tempNodes = [100]
g_nodes = [[100]]

g_tempNodes = [100, 999]
g_nodes = [[100, 999], [100, 999]]

g_tempNodes = [100, 101]
g_nodes = [[100, 101], [100, 101], [100, 101]]

最佳答案

由于您始终使用相同的 g_tempNodes,因此这些值会被覆盖。始终在循环中声明一个新的 g_tempNodes

ArrayList<ArrayList<String>> g_nodes = new ArrayList<ArrayList<String>>();
// ArrayList<String> g_tempNodes = new ArrayList<String>(); // not needed here
...
while (p_sql.next()) {
    ArrayList<String> g_tempNodes = new ArrayList<String>(); // new list created always
    ...
}

关于java - 将值添加到其他数组列表后覆盖数组列表中的旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924902/

相关文章:

java - 具有超过 4680 个元素的 ArrayList 返回空白

java - 数组列表还是链表更适合存储索引对象?

java - 如何使用 Java 从文件编辑模板文档(套用信函)?

java - Android LinearLayout,设置背景为透明

java - 如何手动启用 LibGDX 网络?

java - 从输入中省略连续 8 位数字(非数字)

java - 如何让我的 ArrayList 添加 52 个唯一的对象而不是全部相同?

javascript - 返回具有匹配关键字的前两个字符串

java - 我如何在java中搜索类类型的数组列表

java - 动态命名类的实例?