我有一个数据结构,如数据库Rowset,它有行和行有列.我需要初始化一个具有空值的列,当前代码是循环遍历每一列的行并将值初始化为NULL.如果你有100或10行的列,这是非常低效的.
所以我保持一个初始化的列列表是RowSet级别,然后为各个行执行这个Arraylist的克隆,因为我相信clone()比通过每个元素循环更快.
row.columnsValues = rowsset.NullArrayList.clone()
问题是NullArrayList在被克隆后可能会被意外修改,从而牺牲了RowSet级别的ArrayList的完整性,以防止我做3件事
1)Delcaring ArrayList作为final 2)我插入的任何元素都是final或null 3)方法尽管将这个arrayList传递给其他数组但是声明为final.
听起来像一个计划,你看到任何漏洞吗?
您可以使用 Collections.unmodifiableList((List) originalList.clone())
返回指定列表的不可修改视图.此方法允许模块为用户提供对内部列表的"只读"访问.
您仍然可以向阵列添加新元素.
为什么不使用:
row.columnsValues = Collections.unmodifiableList( (ArrayList) rowsset.NullArrayList.clone())
| 归档时间: |
|
| 查看次数: |
1019 次 |
| 最近记录: |