import cn.dj.bean.Person;
import java.util.ArrayList;
import java.util.Iterator;
/*
* ArrayList基本使用
*/
public class ArrayListTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList al = new ArrayList();
al.add(new Person("lise1", 21));
al.add(new Person("lise2", 22));
al.add(new Person("lise3", 23));
al.add(new Person("lise4", 24));
Iterator it = al.iterator();
while (it.hasNext()) {
//System.out.println(((Person) it.next()).getName()+"::"+((Person) it.next()).getAge());
Person p = (Person) it.next();
System.out.println(p.getName() + "::" + p.getAge());
}
}
}
这段Java代码展示了如何使用ArrayList
来存储和遍历自定义对象(在这个例子中是Person
对象)。代码中包含了一些注释和未使用的代码行,我将解释代码的主要部分,并指出一些可以改进的地方。
-
首先,代码导入了必要的类:
ArrayList
和Iterator
,以及自定义的Person
类。 -
在
main
方法中,创建了一个ArrayList
实例al
。 -
接着,向
ArrayList
中添加了四个Person
对象。每个Person
对象都通过调用其构造函数创建,并传入了名字和年龄作为参数。 -
然后,代码创建了一个
Iterator
实例it
,用于遍历ArrayList
。 -
在
while
循环中,使用hasNext()
方法检查Iterator
是否还有下一个元素,如果有,就使用next()
方法获取当前元素,并将其强制类型转换为Person
对象。 -
最后,使用
System.out.println
打印出每个Person
对象的名字和年龄。
可以改进的地方:
-
注释掉的代码行
System.out.println(((Person) it.next()).getName()+"::"+((Person) it.next()).getAge());
是多余的,因为它尝试在一次循环迭代中两次调用next()
方法,这会导致跳过一个元素。正确的做法是在循环中只调用一次next()
。 -
代码中的注释
// TODO Auto-generated method stub
是IDE自动生成的,通常在实际编码时应该删除或替换为更有意义的注释。 -
代码中的
ArrayList
没有指定泛型类型。虽然这在Java中是合法的,但使用泛型可以提供编译时类型检查,避免不必要的类型转换。例如,可以声明为ArrayList<Person>
。 -
代码中没有处理
ClassCastException
,这是在强制类型转换时可能抛出的异常。虽然在这个例子中我们知道列表中只包含Person
对象,但在更复杂的应用中,添加异常处理是一个好习惯。 -
代码中没有释放资源,因为
ArrayList
和Iterator
不需要手动释放,但这是一个好习惯,对于其他需要释放资源的对象,应该在不再使用时释放它们。