本帖最后由 leexy 于 2010-7-21 13:02 编辑
ArrayList是动态数组,它提供了动态的增加和减少元素,实现了Collection和List接口,灵活的设置数组的大小等好处。每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。 先定义个类Student - public class Student {
- private String name;
- private String no;
- private int age;
- public Student(int age, String name, String no) {
- super();
- this.age = age;
- this.name = name;
- this.no = no;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getNo() {
- return no;
- }
- public void setNo(String no) {
- this.no = no;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
复制代码
- import java.util.ArrayList;
- import java.util.List;
- public class Test {
- public static void main(String[] args) {
- List list=new ArrayList(); //定义一个 ArrayList集合对象list
- Student student;
- for (int i = 0; i < 10; i++) {
- student=new Student(i+18,"姓名"+i,String.valueOf(i));
- list.add(student); //向 ArrayList对象中添加student的三个属性
- System.out.println("学生的年龄:"+student.getAge());
- }
- }
- }
复制代码 运行结果: 学生的年龄:18 学生的年龄:19 学生的年龄:20 学生的年龄:21 学生的年龄:22 学生的年龄:23 学生的年龄:24 学生的年龄:25 学生的年龄:26 学生的年龄:27
LinkedList: - import java.util.LinkedList;
- public class Test1 {
- public static void main(String[] args){
- LinkedList ll=new LinkedList();
- Student stu;
- for(int i=0;i<3;i++){
- stu = new Student(i + 17, "姓名" + i, String.valueOf(i));
- ll.add(stu);
- System.out.println("学生的年龄:"+stu.getAge());
- System.out.println("学生的姓名:"+stu.getName());
- System.out.println("学生的学号:"+stu.getNo());
- System.out.println("-----------------");
- }
- }
- }
复制代码 运行结果: 学生的年龄:17 学生的姓名:姓名0 学生的学号:0 ----------------- 学生的年龄:18 学生的姓名:姓名1 学生的学号:1 ----------------- 学生的年龄:19 学生的姓名:姓名2 学生的学号:2 -----------------
for-each循环语句和Iterator接口都能实现Java集合类型的枚举,并且for-each循环语句底层也调用了集合的Iterator接口,所以其执行效率和性能一样,但使用for-each循环语句枚举语法显得代码简洁易读。 依然是类Student - import java.util.Iterator;
- import java.util.ArrayList;
- import java.util.List;
- public class Cycle {
- public static void main(String[] args) {
- List list = new ArrayList(); // 定义一个 ArrayList集合对象list
- Student student;
- for (int i = 0; i < 10; i++) {
- student = new Student(i + 18, "姓名" + i, String.valueOf(i));
- list.add(student); // 向 ArrayList对象中添加student的三个属性
- }
- Iterator iter = list.iterator(); // 从list集合上获得Iterator接口的引用
- while (iter.hasNext()) // 通过Iterator接口hasNext()方法控制循环停止的标准
- {
- student = (Student) iter.next(); /*通过next方法,获得集合中的下一个元素,默认情况下是Object类型 ,为了使用具体对象的行为,需要强制转换成对应类型*/
- System.out.println("学生的年龄:" + student.getAge());
- }
- for (Object object : list) /*是for-each枚举语句的详细语法,Object是集合中元素的类型,object是表示任何一个元素的局部变量,list是要被枚举的集合对象*/
- {
- System.out.println("学生的姓名:" + ((Student) object).getName());
- }
- }
- }
复制代码 运行结果: 学生的年龄:18 学生的年龄:19 学生的年龄:20 学生的年龄:21 学生的年龄:22 学生的年龄:23 学生的年龄:24 学生的年龄:25 学生的年龄:26 学生的年龄:27 学生的姓名:姓名0 学生的姓名:姓名1 学生的姓名:姓名2 学生的姓名:姓名3 学生的姓名:姓名4 学生的姓名:姓名5 学生的姓名:姓名6 学生的姓名:姓名7 学生的姓名:姓名8 学生的姓名:姓名9 总结: ArrayList的一些用法: 创建ArrayList的List接口【List list = new ArrayList();】、通过利用for循环、枚举读取元素【通过枚举读取元素上已经给出,下面简单写下的写下通过for循环读取元素: for (int i = 0; i < list.size(); i++) { student=(Student)list.get(i); System.out.println("学生的年龄:"+student.getAge()); } 】 至于for-each循环语句和Iterator枚举接口之间是等价的方法,for-each循环语句底层也是通过Iterator接口实现的。所有能够使用for-each语句进行枚举的集合本身必须实现Iterator接口,否则不能使用for-each语句进行枚举。 |