【问题标题】:List of List String in javajava中的列表字符串列表
【发布时间】:2018-05-29 12:07:53
【问题描述】:

我对 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 = "";

}

然后只需将列表添加到列表列表中,然后指定一个索引,我想在其中存储我的列表,然后打印列表列表 (survs)

    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]]

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

提前谢谢你

【问题讨论】:

  • 所有代码都涉及到了吗?
  • “提交两个列表后它给了我这个结果” ??? - 向我们展示代码。
  • 在数组列表上使用set 而不是add
  • 如果重现错误所需的代码最少,则无法提供帮助。我至少需要查看您是否正在为每个 k 清除或创建列表 surveillance 的新实例的信息
  • @HemantPatel add 是一种正确的方法,OP 从未写过他想用另一个元素替换一个元素。使用 set,您更有可能遇到IndexOutOfBoundsException

标签: java arrays list javafx arraylist


【解决方案1】:

每次将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(),那么您将清除survssurveillance 引用中的值。所以最后一切都变空了。

【讨论】:

  • 也尝试摆脱k的东西。只需使用add。
猜你喜欢
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
相关资源
最近更新 更多