java 一个方法 不清楚
悬赏分:10 - 离问题结束还有 17 天 23 小时
import java.util.*;public class CollectionTest {
/**
*
*/
private void testCol(){
Collection col = new ArrayList();//HashSet();//是排序的,而且还是不重复输出的。
//ArrayList();//是不排序的,不管重复不重复都输出的。 //add
col.add(1);
col.add(3);
col.add(6);
col.add(3);
//enum 查询,也是枚举。
Iterator it = col.iterator();
while(it.hasNext()){
Integer a = (Integer)it.next();
System.out.println("a=="+a);
} //update2,放弃上面的方法,在接口Collection<E>用Object[]||toArray()方法,变成一个数组就有位子了,然后再add回去。
Object objs[] = col.toArray(); //Object[]||toArray()返回包含此 collection 中所有元素的数组。
col.clear();////////////////////////////////////////////////////////////////这个地方不明白。
for(int i=0;i<objs.length;i++){
if(objs[i].equals(1)){
objs[i]=4;
}
col.add(objs[i]);
}
it = col.iterator();
while(it.hasNext()){
Integer a = (Integer)it.next();
System.out.println("a.update2_after=="+a);
}
}
public static void main(String[] args) {
CollectionTest col = new CollectionTest();
col.testCol();
}
}
补充:col.clear();那不清楚,为什么要clear(),是不是它在内存中又开辟了一个空间,复制了一份自己集合里的东西,把objs[]东西都放进去了,然后自己的Collection集合里还有原来的那一份啊?就不要了,删除了。我理解的对吗?
悬赏分:10 - 离问题结束还有 17 天 23 小时
import java.util.*;public class CollectionTest {
/**
*
*/
private void testCol(){
Collection col = new ArrayList();//HashSet();//是排序的,而且还是不重复输出的。
//ArrayList();//是不排序的,不管重复不重复都输出的。 //add
col.add(1);
col.add(3);
col.add(6);
col.add(3);
//enum 查询,也是枚举。
Iterator it = col.iterator();
while(it.hasNext()){
Integer a = (Integer)it.next();
System.out.println("a=="+a);
} //update2,放弃上面的方法,在接口Collection<E>用Object[]||toArray()方法,变成一个数组就有位子了,然后再add回去。
Object objs[] = col.toArray(); //Object[]||toArray()返回包含此 collection 中所有元素的数组。
col.clear();////////////////////////////////////////////////////////////////这个地方不明白。
for(int i=0;i<objs.length;i++){
if(objs[i].equals(1)){
objs[i]=4;
}
col.add(objs[i]);
}
it = col.iterator();
while(it.hasNext()){
Integer a = (Integer)it.next();
System.out.println("a.update2_after=="+a);
}
}
public static void main(String[] args) {
CollectionTest col = new CollectionTest();
col.testCol();
}
}
补充:col.clear();那不清楚,为什么要clear(),是不是它在内存中又开辟了一个空间,复制了一份自己集合里的东西,把objs[]东西都放进去了,然后自己的Collection集合里还有原来的那一份啊?就不要了,删除了。我理解的对吗?
//ArrayList();//是不排序的,不管重复不重复都输出的。
这个可不一定,你不重写equals方法和hashcode方法,hashset也可以是重复的,不信你可以试试
2。没有复制,col和objs会引用(指向)相同的对象。其实你应该区分清楚 变量(引用) 和 实力对象的概念。
Java中的变量(对象引用)可以简单的看作“指针”就是保存了地址值。你那些操作只是在复制地址而已,对象没有多出来。要复制的话需要,实现并调用clone()方法。
其实有些入门书籍中就有图例说明,比如scjp考试教材中就有。
相当于把col指向为null,看输出结果,
a==1
a==3
a==6
a==3
a.update2_after==4
a.update2_after==3
a.update2_after==6
a.update2_after==3