java - 如何处理并行排序和添加数据的表?

标签 java sorting jxtable

我面临着 JXTable 中重复行的问题。如果我在 JXTable 中插入新行时对 JXTable 数据进行排序,JXTable 中的最终结果会显示重复的行,这些行在 table 。即使它也显示了已插入的正确行数,但有些行完全丢失,而有些行在 JXTable 中发现重复。

如果我在成功插入所有数据后对 JXTable 进行排序,那么它会显示正确的数据,即没有重复的行,也没有丢失的行。

代码示例: 我有一个要传递 defaultTableModel 的方法,这里是在表中添加项目

public void addingItems(DefaultTableModel  defaultTableModel)
{
for(int i=0;i< numberofItems;i++){
Vector vobject = new Vector();
vobject.add("...");
vobject.add("xxx");
vobject.add("yyy");
...
..
vobject.add("");
defaultTableModel.addRow(vobject);
}

另一方面,我在 tableHeader actionlistener 中添加了排序代码

tableheader.addMouseListener(new MouseListener() {
 public void mouseClicked(MouseEvent e) {
     Vector data = defaultTableModel.getDataVector();   
     Collections.sort(data, new ColumnSorter(colIndex, ascending));
}

});

我已将代码放入 synchronized block 中,但没有成功。

请提供更好的解决方案来处理此问题。

最佳答案

I have put code in the synchronized block but not getting success.

因为您不仅要在排序处理程序 block 中处理同步,而且还要在每个修改操作中处理同步。

例如:

  ... 
  vobject.add("");
  synchronized(monitor) {
    defaultTableModel.addRow(vobject);
  }
}

  ...
  Vector data = defaultTableModel.getDataVector();
  synchronized(monitor) {
    Collections.sort(data, new ColumnSorter(colIndex, ascending));
  }
}

在这种情况下,如果您的表中有大量数据,您的 UI 可能看起来有些无响应,因为排序是 N^2*logN。如果您有大约 200 个条目 - 这对您来说不是问题。

关于java - 如何处理并行排序和添加数据的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10751706/

相关文章:

java - JXTable 中的自定义 header 渲染器?

javax.activation.UnsupportedDataTypeException : no object DCH for MIME type multipart/mixed; boundary

java - 具有相同自定义模型的两个 JXTables - 如何使单元格在一个表中可编辑,但在第二个表中不可编辑?

java - Android HttpGet 请求未发送

c++ - 在 python/C++ 中快速生成用于排序矩阵的 key

c - C 中的 TDD 测试。通过交换和排序测试吗?

mysql 排序顺序没有返回我需要的值

Java:不带 toString 的 StringBuffer 到 byte[]

java - 是否可以用 Java Optional 记录返回值不为空?