如何在Jtable中洗牌

How to shuffle in Jtable

我有一个 JTable,其中包含 TableModel(我所有的数据)。 JTable 有多个行和列。我需要随机洗牌。我知道我可以用

Collections.shuffle(some list from TableModel);

但我不知道如何从具有 TableModel 的现有 JTable 中获取列表。

根据某些人的建议,我尝试了这个

RowSorter<? extends TableModel> sorter = mDocListTable.getRowSorter();
    ArrayList<RowSorter.SortKey> list = new ArrayList<RowSorter.SortKey>();

    list.add(new RowSorter.SortKey(0, SortOrder.DESCENDING));

    Collections.shuffle(list);
    sorter.setSortKeys(list);

但是没用。

这样的东西能行吗?

DefaultTableModel model = (DefaultTableModel) table.getModel();
model.getDataVector().sort((Object o1, Object o2) -> Math.random() > 0.5 ? -1 : 1);
model.fireTableDataChanged();

编辑:

对于 Java-7 并且由于 .sort() 直到 Java-8 才实施,第二个(可能更具可读性)选项可能是:

DefaultTableModel model = (DefaultTableModel) table.getModel();
Collections.shuffle(model.getDataVector());
model.fireTableDataChanged();

这无法还原。