浏览 3619 次
锁定老帖子 主题:讨论Java的数组和集合操作
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-13
很简单的数组和集合操作. 在打印出结果之前, 请先预料一下, 注意一下注释和代码中红色的部分. 欢迎给出您的看法. 谢谢! java 代码
另: LabelValueBean 定义 java 代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-13
打印出*改变后*的输出。
注释中所说的, array安全,是指该array是一个copy(也就是,如果实际集合采用array实现,不能直接返回集合中的那个array,而应该重新创建,否则就是不安全的),不是指array中的元素是原元素的copy。 总之: modify array,是指改变Array中的元素顺序,值类型数据,清空等等 相反的,仅仅改变array中的ref目标数据,不算改变array。 ------------- 呵呵,让我想到了hibernate的关联缓存和对象缓存的问题,所以回复。 |
|
返回顶楼 | |
发表时间:2007-07-13
Qieqie 写道 打印出*改变后*的输出。
注释中所说的, array安全,是指该array是一个copy(也就是,如果实际集合采用array实现,不能直接返回集合中的那个array,而应该重新创建,否则就是不安全的),不是指array中的元素是原元素的copy。 总之: modify array,是指改变Array中的元素顺序,值类型数据,清空等等 相反的,仅仅改变array中的ref目标数据,不算改变array。 ------------- 呵呵,让我想到了hibernate的关联缓存和对象缓存的问题,所以回复。 Thanks a lot! |
|
返回顶楼 | |
发表时间:2007-07-13
呵呵,看看她的源码不就行了.
public Object[] toArray() { return Arrays.copyOf(elementData, size); } public Object[] toArray() { return Arrays.copyOf(elementData, size); } public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; } arraycopy的c代码我找了半天没找到,郁闷,不知道谁熟悉jvm源码的结构的,能告诉俺一下。 这里注释是指返回的数组将会是安全的,因为集合没有维持对它的引用。而是直接通过arraycopy copy了一个新数组。如果能看到arraycopy的c代码这些就更一目了然了. |
|
返回顶楼 | |
发表时间:2007-07-13
呵呵发个调试出来的图片!
|
|
返回顶楼 | |