import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class TheTest {
public static void main(String[]args){
List<student>my=new ArrayList<student>();
student stu1=new student("软件");
student stu2=new student("开发");
my.add(stu1);
my.add(stu2);
stu2=null; //关键这句
Iterator it=my.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
public class student {
public String name="";
public student(String name){
this.name=name;
}
public String toString(){
return name;
}
} 当stu2=null时候,按常理来说 输出的应该是软件 null;
第2个问题
LinkedList.add("sdsd");
LinkedList.add(null);
LinkedList.add("87878");
java中的ArrayList.add(null);这样居然都可以??
数据结构书中链表,中有一个为空指针,那空指针的后驱值怎么还能添加的进去??
c#中是不行的。谁能解释下java中的Arraylist的数据结构。。 (说的好另外加分。)
解决方案 »
- 有谁知道JSF1.2和JSF2.0在标签组件上有哪些区别,公司开晨会要每个人都讲。希望高手指点,因为本人刚进公司对1.2和2.0都不怎么熟悉,让人纠结。
- 密码加密
- spring有哪些好处和坏处
- 救命呀!!!强人们帮帮忙下spring + ibatis数据库连接配置问题,在线等待
- 求大家在开发中关于产品收索模块设计的一些经验(包括算法,模式等等),真心求教
- tomcat的环境设置问题,为什么应用跑不动了?
- 做一个Hibernate小例子,出现如下问题~~~:*
- 在一个类里面经过处理将数据赋到一个数组里,如何将此数组作为一个参数传到另一个类的方法里?
- 浏览器进servlet报404
- Springmvc整合Jackson服务器报错
- dwr中的JS路径问题,录求彻底解决方案
- tomcat一个诡异的报错,求大家帮忙看下
第二问题:正因为第一个问题,所以List集合是允许装载null的
student stu2=new student("开发");
my.add(stu1);
my.add(stu2);
stu2=null; //关键这句执行到 stu2=null这句话list都ADD玩了,怎么输出
换个位置
public static void main(String[] args) {
List<Student> my = new ArrayList<Student>();
Student stu1 = new Student("软件");
Student stu2 = new Student("开发");
stu2 = null; // 关键这句
my.add(stu1);
my.add(stu2); Iterator it = my.iterator();
while (it.hasNext()) {
System.out.println(it.next());
} }
这样就达到你的效果了
public boolean add(E o) {
addBefore(o, header);
return true;
} private Entry<E> addBefore(E o, Entry<E> e) {
Entry<E> newEntry = new Entry<E>(o, e, e.previous);
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
//这里的stu2并没有设定为null啊,当然不会生成null啦
student stu2=new student("开发");这句创建的是一个对象,你把stu2添加到list里面,
再把stu2=null,是不影响list里面的值的,因为你list.add(stu2)执行在前嘛!list允许有空值!!!
student stu2=new student("开发");//new的时候指向“开发”
my.add(stu1);
my.add(stu2);//把“开发”放进去
stu2=null; //再把stu2指向null(与前面的互不影响)这是API的说明:
public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, SerializableList 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class TheTest {
public static void main(String[]args){
List<student>my=new ArrayList<student>();
student stu1=new student("软件");
student stu2=new student("开发");
my.add(stu1);
my.add(stu2);
//stu2=null; //关键这句
stu2.name="wwww";//上面改成这句
Iterator it=my.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
public class student {
public String name="";
public student(String name){
this.name=name;
}
public String toString(){
return name;
}
}
stu2=null的输出结果是
软件
开发输出结果是
软件
wwww
同样都是引用类型 为什么差距就那么大?