2次元オブジェクト配列を返すメソッドが与えられました。どのようにして、以下の方法でオブジェクト配列からデータを取得し、テーブルやラベルに入れて内部に格納されているデータを表示できますか?この方法で2D配列からデータを取得するにはどうすればよいですか?
public Object[][] getDifferences(String table) {
List<Tuple<Object, Object>> difference = differences.get(table);
Object[][] array = new Object[difference.size()][2];
for (int i = 0; i < array.length; i++) {
array[i][0] = difference.get(i).item1();
array[i][1] = difference.get(i).item2();
}
return array;
}
任意の提案:
Object[][] diffs = comp.getDifferences(comp.getName());
for(Object diff : diffs){
table.addItem(diff);
}
これは私が与えられた方法は次のとおりです。これは私がいない成功を収めて試してみましたが何ですか?
UPDATE:3時52分CST 3/17:
私は
Table table = new Table();
Object[][] diffs = comp.getDifferences(comp.getName());
for(int i = 0; i < diffs.length; i++){
table.addItem(diffs[i][0]);
table.addItem(diffs[i][1]);
}
これも機能していない...これを作ってみました。
Object[][] array = new Object[difference.size()][2];
ここでは全体の比較(COMP)クラスは次のとおりです:
public class Compare implements Serializable {
private String name;
private Map<String, List<Tuple<Object, Object>>> differences = new HashMap<String, List<Tuple<Object, Object>>>();
public Compare(String name) {
this.name = name;
}
public Compare(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInput ois = new ObjectInputStream(bis);
Compare compare = (Compare)ois.readObject();
this.name = compare.name;
this.differences = compare.differences;
bis.close();
ois.close();
}
public String getName() {
return name;
}
public boolean addDifference(String table, Object control, Object test) {
if (!differences.containsKey(table)) {
differences.put(table, new ArrayList<Tuple<Object, Object>>());
}
differences.get(table).add(new Tuple<Object, Object>(control, test));
return true;
}
public Object[][] getDifferences(String table) {
List<Tuple<Object, Object>> difference = differences.get(table);
Object[][] array = new Object[difference.size()][2];
for (int i = 0; i < array.length; i++) {
array[i][0] = difference.get(i).item1();
array[i][1] = difference.get(i).item2();
}
return array;
}
public byte[] toBytes() throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput oos = new ObjectOutputStream(bos);
oos.writeObject(this);
oos.flush();
byte[] bytes = bos.toByteArray();
bos.close();
oos.close();
return bytes;
}
private class Tuple<X, Y> implements Serializable {
private final X x;
private final Y y;
public Tuple(X x, Y y) {
this.x = x;
this.y = y;
}
public X item1() {
return this.x;
}
public Y item2() {
return this.y;
}
}
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
Compare foo = new Compare("Test Compare");
foo.addDifference("AGREEMENT", 89, 90);
foo.addDifference("AGREEMENT", "foo", "bar");
foo.addDifference("ACCOUNT", 123, "Dog");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("C:\\Users\\uttbm01\\Documents\\Export\\foo.cmp")));
oos.writeObject(foo);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("C:\\Users\\uttbm01\\Documents\\Export\\foo.cmp")));
Compare bar = (Compare)ois.readObject();
ois.close();
System.out.println();
}
}
これは何を比較しようとしていますか?あるStringを別のStringと比較していますか?期待した結果は何ですか? – user681574
このメソッドは2つの配列を返していません。これは* 1 * 2次元配列を返します。 diffs [0] [0]やdiffs [0] [1]などの行と列のインデックスを指定すると、そのメンバーにアクセスできます。 –
このメソッドは、差異リストから「名前」要素を抽出します。そして、これらの抽出された名前をdouble配列に追加します。ここで、array [i] [0] == array [i] [1]を呼び出してそれらを比較し、それらが同じ要素であるかどうかを調べることができます。 ==または.equalを呼び出して、2つの要素を比較することができます。 – Juniar