我现在要建立一个实体类,这个类对应于数据库里面的一个表。这个表有大约30多个字段。但是表中大部分的记录只用到其中一小部分字段。现在我考虑了两种方案:第一种,也就是通常的方法,每个字段对应一个类属性,那么这个类就需要有30多个域第二种,类只维护一个Map。在实例化时,只将用到的字段的key-value对插入到Map中。我以为这样看上去比较省空间。但是究竟哪个综合性能更高一点?

解决方案 »

  1.   

    一般来说,还是第一种方法好一些
    Map本身也是一种系统开销
      

  2.   

    一般来说还是第一种好一些
    Map本身也是一种开销
      

  3.   

    一般来说还是第一种好一些
    Map本身也是一种开销
      

  4.   

    应该从表结构上考虑,如果这个表能拆成多个表,倒是可以应该考虑拆表,如果不能,就不要动,map的想法是好,但没有实际意义,不可取。
      

  5.   

    一方面,如果大部分字段不使用的话,就没有必要每个字段都建立对象的属性
    另一方面,及时建立完整的属性映射,你的select语句也没必要每次都select *
    用多少select多少就是了,只映射使用到的字段,其他留null不就可以了
      

  6.   

    典型的稀疏矩阵。用方法二的效率要远高于方法一(如果你的表真的是稀疏表的话),但用Map处理有是太好。构建一个二叉树:public class DataNode {
    private int rowNum;
    private int colNum;
    private Object data;
    DataNode nextRow;
    DataNode nextCol;
    public int getRowNum() {
    return rowNum;
    }
    public void setRowNum(int rowNum) {
    this.rowNum = rowNum;
    }
    public int getColNum() {
    return colNum;
    }
    public void setColNum(int colNum) {
    this.colNum = colNum;
    }
    public Object getData() {
    return data;
    }
    public void setData(Object data) {
    this.data = data;
    }
    public DataNode getNextRow() {
    return nextRow;
    }
    public void setNextRow(DataNode nextRow) {
    this.nextRow = nextRow;
    }
    public DataNode getNextCol() {
    return nextCol;
    }
    public void setNextCol(DataNode nextCol) {
    this.nextCol = nextCol;
    }
    public DataNode() {
    }
    public DataNode(int rowNum, int colNum, Object data) {
    this.rowNum = rowNum;
    this.colNum = colNum;
    this.data = data;
    }
    }获取数据时,先从左分支找到对应行(nextRow),然后从右分支(nextCol)把该行不为空的数据读出。PS:关于稀疏矩阵在《数据结构与算法》的课本里有详细介绍,鄙人这里就不赘述了。