代码之家  ›  专栏  ›  技术社区  ›  yassinec

java中的列表字符串列表

  •  0
  • yassinec  · 技术社区  · 6 年前

    我对list的实现有问题,它总是给我最后一个重复的元素。以下是我的代码:

    这是我的名单和名单的声明。

    public List<List<String>> survs = new ArrayList<>();
    public List<String> surveillance = new ArrayList<>();
    public int k=0;
    

    在这里,我将一些字符串添加到列表中。

      public void handleAddSURVClick(ActionEvent actionEvent) {
        survName = name.getText();
        max = maxp.getText();
        min = minp.getText();
        surveillance.add(survName);
        surveillance.add(monitoredObject);
        surveillance.add(monitoredProperty);
        surveillance.add(max);
        surveillance.add(min);
        // Add surveillance to the vector
        survs.add(k, surveillance);k++;
        //Surv initialisation
        survName = ""; name.clear();
        max = ""; maxp.clear();
        min = ""; minp.clear();
        monitoredObject = "";
        monitoredProperty = "";
    
    }
    

    然后简单地将列表添加到列表中,并指定一个索引,在其中存储列表,然后打印列表(SURV)

        survs.add(k, surveillance);k++;
        System.out.println(survs);
    

    不幸的是,它在提交两个列表后给出了这个结果,它只给出了最后一个多余的结果:

        [[yas, ProductSurrounding, charge, 667, 524, stack, ProductSurrounding, charge, 8787, 6422], [yas, ProductSurrounding, charge, 667, 524, stack, ProductSurrounding, charge, 8787, 6422]]
    

    如果我执行surveillance.clear(),结果将是两个空列表[[],[]]

    提前谢谢你

    1 回复  |  直到 6 年前
        1
  •  2
  •   Koustuv Ganguly    6 年前

    创建的新实例 surveillance 每次添加到 survs 但是板条箱 SURVS 此实例仅一次。 请这样做:

        public void handleAddSURVClick(ActionEvent actionEvent) {
            survName = name.getText();
            max = maxp.getText();
            min = minp.getText();
            surveillance=new ArrayList<>(); 
            surveillance.add(survName);
            surveillance.add(monitoredObject);
            surveillance.add(monitoredProperty);
            surveillance.add(max);
            surveillance.add(min);
            // Add surveillance to the vector
            survs.add(k, surveillance);k++;
            //Surv initialisation
            survName = ""; name.clear();
            max = ""; maxp.clear();
            min = ""; minp.clear();
            monitoredObject = "";
            monitoredProperty = "";
    
        }
    

    如果你这样做的话 surveillance.clear() 然后,您将清除引用中的值 监控 在你的 SURVS 最后,所有的东西都变成了空的。