Java:创建一个单独的排序Arraylist,同时保留原始列表
我有以下功能。它接收一个数组列表 在我的GUI上,我有一个在两种状态之间切换的按钮。一个按字母顺序排列列表,另一个按出现顺序打印列表 请注意,我是从一个外部文件填充arraylist,并且我是在另一个函数中打开此文件的,因此重新打开该文件并用其内容重新填充列表数组似乎是不必要的 现在,列表按字母顺序进行排序,但不会按原始顺序打印 如何创建一个单独的列表,在保持原始列表有序的同时保存已排序的列表 谢谢Java:创建一个单独的排序Arraylist,同时保留原始列表,java,arraylist,Java,Arraylist,我有以下功能。它接收一个数组列表 在我的GUI上,我有一个在两种状态之间切换的按钮。一个按字母顺序排列列表,另一个按出现顺序打印列表 请注意,我是从一个外部文件填充arraylist,并且我是在另一个函数中打开此文件的,因此重新打开该文件并用其内容重新填充列表数组似乎是不必要的 现在,列表按字母顺序进行排序,但不会按原始顺序打印 如何创建一个单独的列表,在保持原始列表有序的同时保存已排序的列表 谢谢 sortButton.addActionListener(new ActionListener(
sortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (sortButton.getText().equals("Sort by Route")){
sortButton.setText("Sort Alphabetically");
Journey value = mapper.get(objectName);
ArrayList stops = value.getNewStop(); //loads an arraylist into stops
System.out.println(stops);
}
}
else if (sortButton.getText().equals("Sort Alphabetically")){
sortButton.setText("Sort by Route");
Journey value = mapper.get(objectName);
ArrayList stopsSorted = value.getNewStop(); // use the arraylist attribute
Collections.sort(stopsSorted);
System.out.println(stopsSorted);
}
}
}
});
我将假设
ArrayList
包含String
s:
ArrayList<String> stopsSorted = new ArrayList<>(value.getNewStop()); // use the arraylist attribute
Collections.sort(stopsSorted);
System.out.println(stopsSorted);
ArrayList stopsorted=newArrayList(value.getNewStop());//使用arraylist属性
集合。排序(停止排序);
系统输出打印LN(停止连接);
如您所见,我们将不希望修改的
ArrayList
传递到新ArrayList
的构造函数中,您应该能够克隆原始列表并对克隆进行排序。然后您只需切换显示的内容-排序列表或原始列表
ArrayList stopsSorted = stops.clone()
Collections.sort(stopsSorted);
System.out.println(stopsSorted)
@JonGoe注意,这种方法是浅层克隆,对于不可变类型(即
String
是)来说不是问题,但如果您在内部保存可变对象…@niceman,只要OP除了排序之外不修改列表中的任何内容,它们就可以了。