首页 > 解决方案 > List of List String in java

问题描述

I have a problem with the implementation of List>, it gives me always the last element duplicated. Here is a bunch of my code :

Here is the declaration of my list and the list of lists.

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

Here i add to the list some strings.

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

}

then simply i add the list to the list of lists and i specify an index in which i wanna store my list and i print the list of lists ( survs )

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

Unfortunately, it gives me this result after submitting two lists, it gives just the last one redundant:

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

if i do surveillance.clear(), the results will be two empty lists [[],[]]

Thank you in advance

标签: javaarrayslistjavafxarraylist

解决方案


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()那么你将清除 .so 中引用的值surveillancesurvs所以最后一切都变空了。


推荐阅读