浏览 1634 次
|
锁定老贴子 主题:讨论Java的数组和集合操作
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-07-13 关键字: Java 数组 集合
很简单的数组和集合操作. 在打印出结果之前, 请先预料一下, 注意一下注释和代码中红色的部分. 欢迎给出您的看法. 谢谢! java 代码
另: LabelValueBean 定义 java 代码
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间: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
呵呵发个调试出来的图片!
|
|
| 返回顶楼 | |








