2016-12-18 8 views
-5

Also, ich habe ein Set, wo jede Instanz vier Felder hat. Ich möchte es in Array [i] [j] konvertieren, wobei jede [j] Zeile eine Instanz darstellen würde.Wie konvertiere ich ein Set in 2D-Array in Java?

Bearbeiten: Ok. Entschuldigung für meine schlechte Frage Konstruktion. Ich versuche, ein Programm zu machen, das eine TreeSet-Daten in der Tabelle mit javax.swing.table.AbstractTableModel darstellen würde. Tatsächliches Problem war in AbstractTableModels getValueAt (int r, int c) -Methode, die einen Index für jedes Tabellenelement benötigt. Da Sets keinen Index haben, habe ich entschieden, Daten nur für Tabellen in ein 2D-Array zu konvertieren, weil es die Dinge einfach macht. Aber jetzt bin ich fest mit setValueAt (Objekt Wert, int r, int c), wo ich bearbeitete Daten zurück in Set konvertieren soll. Jetzt denke ich darüber nach, dieses Set in eine Liste anstatt in ein Array umzuwandeln, da es einfach wäre, es zurück zu übertragen.

+0

zeigen uns, was Sie bisher versucht haben –

+1

Und meine Frage ist: Warum? Java ist eine * objektorientierte Sprache *, die Auflösung einer Objektliste in ein Array fühlt sich einfach falsch an ... –

Antwort

0

sei a:

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

Jetzt können Sie einen Satz mit dieser Vorlage erklären können:

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

In Ihrem Set Ihre Objekte sind, die vier Felder.

Wenn Sie ein zweidimensionales Array deklarieren möchten, welcher Typ sollte sein? - das häufigste Elternteil sein kann, und in diesem Fall ist es das Objekt.

So eine Funktion deklarieren ein sie implementieren:

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; 
} 
Verwandte Themen