我想实现一个“后退”按钮,为此,在输入任何功能之前,我将从临时列表中的主列表中复制数据。当用户单击“后退”按钮时,我将调用tempList而不是mainList。

但是,尽管我使用mainList的旧值初始化了tempList(仅一次),但在函数之后tempList具有mainList的新值。

码:

     ObservableList<List<String>> fnlData;

     List<List<String>> fnlDataTMP;
     .
     .

private void cnvrtColumn() {

        fnlDataTMP = fnlData;

        delWV();//if the mainList(fnlData) has a change in any of this functions, the tmpList also updates the values
        delWM();
        addVN();
        addWV();
        addWM();
        dateFormat();
        changeChar();

        finalTable.getSelectionModel().clearSelection();
        finalTable.getItems().clear();
        finalTable.getColumns().clear();
        createColumns();
        finalTable.getItems().addAll(fnlData);
}

最佳答案

您只是将引用添加到同一列表。

如果您确实要复制列表,请按照以下方式进行操作:

fnlDataTMP = new ArrayList<List<String>>(fnlData);


假设操作了fnlData列表中的列表,则必须执行以下操作才能创建真实副本:

fnlDataTMP = new ArrayList<List<String>>();
for (List<String> sublist : fnlData) {
    fnlDataTMP.add(new ArrayList<String>(sublist));
}

关于java - Java-LinkedList初始化不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31695503/

10-10 01:06