所以,我有一个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而不是数组,因为它很容易转回。
答案 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;
}