如何在Java中将Set转换为2D数组?

时间:2016-12-18 13:47:18

标签: java collections

所以,我有一个Set,每个实例有四个字段。 我想将它转换为Array [i] [j],其中每个[j]行代表一个实例。

编辑: 好。对不起,我的问题构建不好。我试图制作一个程序,它将用javax.swing.table.AbstractTableModel表示表中的TreeSet数据。 实际问题出在AbstractTableModel的getValueAt(int r,int c)方法中,该方法需要每个表元素的索引。由于集合没有索引,我决定将数据转换为仅用于表格的2D数组,因为它使事情变得简单。但现在我坚持使用setValueAt(Object value,int r,int c),我应该将编辑后的数据转换回Set。 现在我正在考虑将此Set转换为List而不是数组,因为它很容易转回。

1 个答案:

答案 0 :(得分:0)

让我们成为:

public class MyClassWhithFourFields {
 String field1;
 int field2;
 Object field3;
 double field4;
}

现在您可以使用此模板声明一个集合:

Set<MyClassWhithFourFields> mySet = new HashSet<MyClassWhithFourFields>();

在你的Set中是你的对象,它有4个字段。

如果要声明二维数组,应该是什么类型? - 最常见的父亲可以,在这种情况下,它是对象。

所以声明一个函数是一个实现它:

Object[][] transformSetTo2dArray(Set < MyClassWhithFourFields > mySet) {
 if (mySet == null) {
  return null;
 }
 Object[][] result = new Object[4][mySet.size()];
 int j = 0;
 // iterate the set:
 for (MyClassWhithFourFields myObject: mySet) {
  myObject[0][j] = myObject.field1;
  myObject[1][j] = myObject.field2;
  myObject[2][j] = myObject.field3;
  myObject[3][j] = myObject.field4;
  j++;
 }
 return result;
}