【问题标题】:Creating Object[][] Types On The Fly即时创建 Object[][] 类型
【发布时间】:2012-11-23 13:39:28
【问题描述】:

这是我的定义类,我没有包含获取代码来保留它short and sweet

public class Details() {
  String name;
  double price;
  int quan;
  double totalValue;

  public String getName();
  public double getPrice();
  public int quan();
  public double totalValue();
}

这就是我保存详细信息列表的方式

ArrayList<Details> myDetails = new ArrayList<Details>();

这是我想用来制作表格行/列的函数 在这里,我希望能够遍历我的详细信息表以生成类似于下面的内容。

public Object[][] getStockTable() {
  Object[][] dynamicObject = new Object[][] {
      { "Name1", "Price1", "Quan1", "TV1"  },
      { "Name2", "Price2", "Quan2", "TV2"  },
      { "Name3", "Price3", "Quan3", "TV3"  } };

  //But how do this by iterating through rather than manually like above^
  return dynamicObject;

}

这就是我为表格设置行/列的方式

dm.setDataVector(getStockTable(), new Object[] { "Name","Price", "Quan", "Total Value" });

经过一番折腾,我还没想出办法做到这一点。请不要随便给我一个答案,我希望能够理解如何去做,而不是为我做。

【问题讨论】:

  • 可以使用Reflection确定字段,然后创建Array
  • 你能举个例子或链接到一个好的 tut 吗?
  • 不需要反射,他可以遍历他的列表并根据需要使用 getter 创建他的数组。
  • 它实际上将数组名称、价格、数量和总值转换为正确的 Object[][] 格式,这让我很困惑

标签: java list object


【解决方案1】:

这样的?

public Object[][] getStockTable() {
    ArrayList<Details> details = getDatailsList();
    Object[][] result = new Object[details.size()][];
    for (int i = 0; i < details.size(); i++) {
        Details detail = details.get(i);
        Object[] det = new Object[4];
        det[0] = detail.getName();
        det[1] = detail.getPrice();
        det[2] = detail.quan();
        det[3] = detail.totalValue();
        result[i] = det;
    }
    return result;
}

【讨论】:

  • 不错的答案,终于明白需要的逻辑了+1
【解决方案2】:

Object[][] 只是一个 Object[] 的数组,因此实现它的 OO 方法是向 Detail 添加一个创建单个“行”Object[] 的方法

public Object[] toRow() {
  return new Object[] { getName(), String.valueOf(getPrice()) /* etc. */ };
}

然后将它们收集到getStockTable

Object[][] tbl = new Object[myDetails.size()][];
int row = 0;
for(Detail d : myDetails) {
  tbl[row++] = d.toRow();
}

【讨论】:

  • 不错的 OO 代码,我不明白我怎么没想到这个。很好的答案
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2020-11-24
  • 1970-01-01
相关资源
最近更新 更多