代码之家  ›  专栏  ›  技术社区  ›  Joonas Pulakka

ArrayList of arrays vs.ArrayList数组vs.类似的东西

  •  6
  • Joonas Pulakka  · 技术社区  · 14 年前

    我正在创建一个 TableModel 这将有固定数量的列,但行的数量将发生变化(大多数情况下,随着时间的推移而增加)。哪种方法更适合存储数据,

    ArrayList[] columns = new ArrayList[numberOfColumns];
    // Each array element is one column. Fill each of them with a new ArrayList.
    ...
    public Object getValueAt(int row, int column) {
        return columns[column].get(row);
    }
    

    i、 e.创建一个 ArrayList s、 各 表示一列,或:

    ArrayList<Object[]> rows = new ArrayList<Object[]>();
    // Each ArrayList element is one row.
    
    public Object getValueAt(int row, int column) {
        return rows.get(row)[column];
    }
    

    你知道哪一个在速度或存储方面更有效吗?备选方案1要求扩展N 每增加一行,都需要扩展一个,而备选方案2只需要扩展一行 ArrayList

    4 回复  |  直到 14 年前
        1
  •  6
  •   cletus    14 年前

    List<Object[]> rows;
    

    但是,对于行对象应该是什么,有几个选项:

    1. A. List Collection ; 或

    (3) 可能可以通过使用某种接口来完成,该接口允许您查询列的数量、类型和名称。

        2
  •  2
  •   vpram86    14 年前

    使用单个ArrayList本身并像这样访问元素怎么样

    public Object getValueAt(int row, int column) { 
        return data.get(row*NUMBER_OF_COLUMNS+column); 
    } 
    

        3
  •  1
  •   Itay Maman    14 年前

    首先,数组的长度是固定的,而ArrayList是灵活的。考虑到#列是固定的,所以每行有一个数组似乎很自然。

    选项#1是危险的,因为它隐含了所有ArrayList长度相同的要求。您可能会意外地忽略添加到其中任何一个,从而产生错误。您在选项2中不会遇到此问题。

        4
  •  1
  •   Tom    14 年前

    编辑:实际上,您可以在ArrayList的构造函数中设置容量,所以我想这可能没有多大区别: http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html