我想实现一个“后退”按钮,为此,在输入任何功能之前,我将从临时列表中的主列表中复制数据。当用户单击“后退”按钮时,我将调用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/