Java 每次运行此代码时,可观察列表插入顺序都会更改。如何解决这个问题?
我想比较两个列表,但这个tableview只接受可观察列表。这个列表总是更改其插入顺序,这很难进行比较。如何保持列表的插入顺序 提前谢谢Java 每次运行此代码时,可观察列表插入顺序都会更改。如何解决这个问题?,java,javafx,Java,Javafx,我想比较两个列表,但这个tableview只接受可观察列表。这个列表总是更改其插入顺序,这很难进行比较。如何保持列表的插入顺序 提前谢谢 public class MapCompare extends Application { TableView<ECOitem> ecotable; @Override public void start(Stage arg0) throws Exception { VBox v=new VBox();
public class MapCompare extends Application {
TableView<ECOitem> ecotable;
@Override
public void start(Stage arg0) throws Exception {
VBox v=new VBox();
ecotable = new TableView<>();
TableColumn<ECOitem, String> changeColoumn = new TableColumn<>("Change");
changeColoumn.setMinWidth(200);
changeColoumn.setCellValueFactory(new PropertyValueFactory<>("change"));
TableColumn<ECOitem, String> changeAnalystColoumn = new TableColumn<>("Change Analyst");
changeAnalystColoumn.setMinWidth(200);
changeAnalystColoumn.setCellValueFactory(new PropertyValueFactory<>("changeAnalyst"));
TableColumn<ECOitem, String> cycleTimeColoumn = new TableColumn<>("Cycle Time");
cycleTimeColoumn.setMinWidth(200);
cycleTimeColoumn.setCellValueFactory(new PropertyValueFactory<>("cycleTime"));
ecotable.setItems(getProduct());
}
private ObservableList<ECOitem> getProduct() {
Map<ECOitem, String> data = new HashMap<ECOitem, String>();
data.put(new ECOitem("ECO1001223", "sharon", "68:20:32:31"), "1");
data.put(new ECOitem("ECO1001266", "anna", "52:21:59:53"), "2");
data.put(new ECOitem("ECO1001258", "sharon.bosman", "48:0:47:33"), "3");
data.put(new ECOitem("ECO1001255", "shar", "48:0:46:15"), "4");
data.put(new ECOitem("ECO1001256", "bosman", "48:0:43:39"), "5");
data.put(new ECOitem("ECO1001257", "shaman", "42:19:11:32"), "6");
ObservableList<ECOitem> products = FXCollections.observableArrayList();
for (Map.Entry<ECOitem, String> value : data.entrySet()) {
products.add(value.getKey());
}
System.out.println(products);
System.out.println(products);
return products;
}
public static void main(String[] args) {
launch(args);
}
}
公共类MapCompare扩展了应用程序{
表视图生态表;
@凌驾
public void start(阶段arg0)引发异常{
VBox v=新的VBox();
ecotable=newtableview();
TableColumn ChangeColumn=新的TableColumn(“变更”);
变更集合最小宽度(200);
changeColoumn.setCellValueFactory(新属性ValueFactory(“变更”));
TableColumn ChangeAnalystColumn=新的TableColumn(“变更分析师”);
ChangeAnalystColumn.setMinWidth(200);
ChangeAnalystColumn.setCellValueFactory(新属性ValueFactory(“changeAnalyst”));
TableColumn cycleTimeColoumn=新的TableColumn(“循环时间”);
环基色组最小宽度(200);
cycleTimeColoumn.setCellValueFactory(新属性ValueFactory(“cycleTime”));
setItems(getProduct());
}
私有可观察列表getProduct(){
映射数据=新的HashMap();
新的生态项目(“ECO1001223”,“sharon”,“68:20:32:31”),“1”);
新的生态项目(“ECO1001266”,“安娜”,“52:21:59:53”),“2”);
新的生态项目(“ECO1001258”,“sharon.bosman”,“48:0:47:33”),“3”);
数据。put(新的生态项目(“ECO1001255”,“shar”,“48:0:46:15”),“4”);
新的生态项目(“ECO1001256”、“bosman”、“48:0:43:39”)、“5”);
数据。put(新的ECOitem(“ECO1001257”,“萨满”,“42:19:11:32”),“6”);
ObservableList products=FXCollections.observableArrayList();
for(Map.Entry值:data.entrySet()){
products.add(value.getKey());
}
系统输出打印(产品);
系统输出打印(产品);
退货产品;
}
公共静态void main(字符串[]args){
发射(args);
}
}
这是因为您以前创建的HashMap
不能保证维护订单
可观察的ArrayList
确实维持了秩序
如果这里的秩序很重要。为此,您必须使用正确的数据结构
这正是你要找的。它是一个
HashMap
例外,它以插入顺序在项目上迭代。我不认为ObservableList改变了顺序,因为HashMap每次都在改变顺序如果你想保持HashMap的顺序,使用LinkedHashMap而不是HashMap解决了这个问题,谢谢@HamzaShahidAli