前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java基础学习_集合类01_对象数组、集合Collection接口、集合List接口_day15总结

java基础学习_集合类01_对象数组、集合Collection接口、集合List接口_day15总结

作者头像
黑泽君
发布2018-10-12 10:27:00
5800
发布2018-10-12 10:27:00
举报
文章被收录于专栏:黑泽君的专栏

============================================================================= ============================================================================= 涉及到的知识点有: 1:对象数组的概述和案例(掌握)   (1)对象数组的概述   (2)对象数组的案例 2:集合(Collection接口)(掌握)   (1)集合的由来?   (2)集合和数组的区别?   (3)集合的继承体系结构   (4)Collection接口的概述   (5)Collection接口的成员方法(注意:默认方法前有public abstract修饰)   (6)Collection集合的遍历   (7)迭代器   (8)Collection集合的案例(遍历方式:迭代器方式)(要求:用记事本默写)     A:存储字符串并遍历     B:存储自定义对象并遍历 3:集合(List接口)(掌握)   (1)List是Collection的子接口   (2)List的特有功能(注意:默认方法前有public abstract修饰)   (3)List集合的特有遍历功能   (4)列表迭代器的特有功能(了解)   (5)ConcurrentModificationException 并发修改异常   (6)常见的数据结构以及其优缺点   (7)List的子类特点(面试题)   (8)List集合的案例(遍历方式 迭代器和普通for循环) ============================================================================= ============================================================================= 1:对象数组的概述和案例(掌握) (1)对象数组的概述     数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。 (2)对象数组的案例     我有5个学生,请把这个5个学生的信息存储到数组中,并遍历学生数组,获取得到每一个学生的信息。

    示例代码如下:

代码语言:javascript
复制
 1 package cn.itcast_01;
 2 
 3 public class Student {
 4     // 成员变量
 5     private String name;
 6     private int age;
 7 
 8     // 构造方法
 9     public Student() {
10         super();
11     }
12 
13     public Student(String name, int age) {
14         super();
15         this.name = name;
16         this.age = age;
17     }
18 
19     // 成员方法
20     // getXxx()/setXxx()
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public int getAge() {
30         return age;
31     }
32 
33     public void setAge(int age) {
34         this.age = age;
35     }
36 
37     @Override
38     public String toString() {
39         return "Student [name=" + name + ", age=" + age + "]";
40     }
41 }
代码语言:javascript
复制
 1 package cn.itcast_01;
 2 
 3 /*
 4  * 我有5个学生,请把这个5个学生的信息存储到数组中,并遍历学生数组,获取得到每一个学生的信息。
 5  *         学生类:Student
 6  *             成员变量:name,age
 7  *             构造方法:无参,带参
 8  *             成员方法:getXxx()/setXxx()
 9  *         存储学生的数组?自己想想应该是什么样子的?
10  * 分析:
11  *         A:创建学生类。
12  *         B:创建学生数组(对象数组)。
13  *         C:创建5个学生对象,并赋值。
14  *         D:把C步骤的元素,放到学生数组中。
15  *         E:遍历学生数组。
16  */
17 public class ObjectArrayDemo {
18     public static void main(String[] args) {
19         // 创建学生数组(对象数组)。
20         Student[] students = new Student[5];
21         
22         // 遍历新创建的学生数组。
23         for (int x = 0; x < students.length; x++) {
24             System.out.println(students[x]);
25         }
26         System.out.println("---------------------");
27 
28         // 创建5个学生对象,并赋值。
29         Student s1 = new Student("林青霞", 27);
30         Student s2 = new Student("风清扬", 30);
31         Student s3 = new Student("刘意", 30);
32         Student s4 = new Student("赵雅芝", 60);
33         Student s5 = new Student();
34         s5.setName("王力宏");
35         s5.setAge(27);
36         
37         // 把C步骤的元素,放到学生数组中。
38         students[0] = s1;
39         students[1] = s2;
40         students[2] = s3;
41         students[3] = s4;
42         students[4] = s5;
43 
44          // 看到很相似,就想用循环改,把C步骤的元素,放到学生数组中。
45          // for (int x = 0; x < students.length; x++) {
46          //      students[x] = s + "" + (x + 1); // 拼完之后是一个字符串了。
47          // }
48          // 这个是有问题的。
49 
50         // 遍历赋值后的学生数组,用重写的toString()方法
51         for (int x = 0; x < students.length; x++) {
52             // 重写toString()方法,注意:一个方法写定之后就不要再去改变了。因为改来改去的还不如重新写个方法呢?
53             System.out.println(students[x]); 
54         }
55         System.out.println("---------------------");
56         
57         // 遍历赋值后的学生数组,用getXxx()方法
58         for (int x = 0; x < students.length; x++) {            
59             // System.out.println(students[x].getName() + "---" + students[x].getAge()); // 或者等价于下面
60             // 因为学生数组的每一个元素都是一个学生。
61             Student s = students[x];
62             System.out.println(s.getName() + "---" + s.getAge());
63         }
64     }
65 }

----------------------------------------------------------------------------- 2:集合(Collection接口)(掌握) (1)集合的由来?     我们学习的是Java --> 面向对象 --> 操作很多对象 --> 存储 --> 容器(数组和StringBuffer) --> 数组     而数组的长度是固定的,当添加的元素超过了数组的长度需要对数组重新定义,太麻烦,所以数组不适合做变化的需求,Java内部就给我们提供了集合类供我们使用。 集合类能存储任意对象,长度是可以该变的,即长度能随着元素的增加而增加,随着元素的减少而减少。 (2)集合和数组的区别? A:长度区别       数组长度固定,不能自动增长。       集合的长度的是可变的,可以根据元素的增加而增长。 B:内容区别       数组只能存储同一种类型。       集合可以存储不同类型(其实集合一般存储的也是同一种类型)。 C:元素的数据类型区别       数组既可以存储基本数据类型,又可以存储引用数据类型;基本数据类型存储的是值,引用数据类型存储的是地址值。       集合只能存储引用数据类型(对象),其实集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象。 ---------------------------------------  (3)集合的继承体系结构     刚说过集合是存储多个元素的,但是呢,存储多个元素我们也是有不同需求的:       比如说,我要这多个元素中不能有相同的元素;       再比如说,我要这多个元素按照某种规则排序一下。 针对不同的需求,Java就提供了不同的集合类,这样呢,Java就提供了很多个集合类。       这多个集合类的数据结构不同,数据结构不同不重要的,重要的是你要能够存储东西,并且还要能够使用这些东西,比如说存储、获取、判断等。       既然这样,那么,这多个集合类是有共性的内容的,我们把这些集合类的共性内容不断的向上提取,最终就能形成集合的继承体系结构如下图所示:

  Collection(单列集合的根接口)     |--List(有序:存和取的顺序一致,有索引,可以存储重复元素)       |--ArrayList(数组实现)       |--Vector(数组实现)       |--LinkedList(链表实现)     |--Set(无序:存和取的顺序不一致,无索引,不可以存储重复元素)       |--HashSet(哈希算法)       |--TreeSet(二叉树算法) --------------------------------------- (4)Collection接口的概述     Collection接口是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。(后面会慢慢的讲解)     Collection表示一组对象,这些对象也称为collection的元素。     JDK不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现。 (5)Collection接口的成员方法(注意:默认方法前有public abstract修饰) 1:添加功能       boolean add(Object obj)   添加一个元素       boolean addAll(Collection c)  添加一个集合的元素 2:删除功能       void clear()              移除所有元素       boolean remove(Object o)        移除一个元素       boolean removeAll(Collection c)    移除一个集合的元素(只要集合中有一个元素被移除了,就返回true) 3:判断功能       boolean contains(Object o)       判断集合中是否包含指定的元素       boolean containsAll(Collection c)   判断集合中是否包含指定的集合元素(只有集合包含所有的元素,才返回true,才叫包含)       boolean isEmpty()           判断集合是否为空 4:获取功能(重点学)       Iterator<E> iterator()  返回在此集合的元素上进行迭代的迭代器。是集合专用的遍历方式。 5:长度功能       int size()                   元素的个数(即集合的长度) 面试题: 数组有没有length()方法呢? 答:没有。特别注意:因为数组求长度是:数组名.length,而不是:数组名.length()         字符串有没有length()方法呢? 答:有。 集合有没有length()方法呢? 答:没有,因为集合求长度的方法是size()。 6:交集功能(了解)       boolean retainAll(Collection c)   两个集合都有的元素?思考:元素去哪了?返回的boolean又是什么意思呢?         // 假设有两个集合A,B。         // A对B做交集,最终的结果保存在集合A中,集合B不变。         // 但是返回值表示的是集合A是否发生过改变。         // 集合A没有发生改变,返回false,即集合B包含集合A;         // 集合A发生改变,返回true。 7:把集合转成对象数组,可以实现集合的遍历(了解)       Object[] toArray() --------------------------------------- (6)Collection集合的遍历 A:把集合转成对象数组(了解)       练习:用集合存储5个学生对象,并把学生对象进行遍历(遍历方式:把集合转成对象数组,需要用记事本背着写出来)。       示例代码如下:

代码语言:javascript
复制
 1 package cn.itcast_02;
 2 
 3 public class Student {
 4     // 成员变量
 5     private String name;
 6     private int age;
 7 
 8     // 构造方法
 9     public Student() {
10         super();
11     }
12 
13     public Student(String name, int age) {
14         super();
15         this.name = name;
16         this.age = age;
17     }
18 
19     // 成员方法
20     // getXxx()/setXxx()
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public int getAge() {
30         return age;
31     }
32 
33     public void setAge(int age) {
34         this.age = age;
35     }
36 }
代码语言:javascript
复制
 1 package cn.itcast_02;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 
 6 /*
 7  * 练习:用集合存储5个学生对象,并把学生对象进行遍历(遍历方式:把集合转成对象数组,需要用记事本背着写出来)。
 8  * 
 9  * 分析:
10  *         A:创建学生类
11  *         B:创建集合对象
12  *         C:创建学生对象
13  *         D:把学生添加到集合
14  *         E:把集合转成对象数组
15  *         F:遍历对象数组
16  */
17 public class StudentDemo {
18     public static void main(String[] args) {
19         // 创建集合对象
20         Collection c = new ArrayList();
21 
22         // 创建学生对象
23         Student s1 = new Student("林青霞", 27);
24         Student s2 = new Student("风清扬", 30);
25         Student s3 = new Student("令狐冲", 33);
26         Student s4 = new Student("武鑫鑫", 25);
27         Student s5 = new Student("刘晓曲", 22);
28 
29         // 把学生添加到集合
30         c.add(s1);
31         c.add(s2);
32         c.add(s3);
33         c.add(s4);
34         c.add(s5);
35 
36         // 把集合转成对象数组,向上转型
37         Object[] objs = c.toArray();
38         // 遍历对象数组
39         for (int x = 0; x < objs.length; x++) {
40             // System.out.println(objs[x]); // 没有重写toString()方法
41 
42             // 向下转型
43             Student s = (Student) objs[x];
44             System.out.println(s.getName() + "---" + s.getAge());
45         }
46     }
47 }

    B:迭代器(集合的专用遍历方式)       练习:用集合存储5个学生对象,并把学生对象进行遍历(遍历方式:用迭代器进行遍历)。       示例代码如下:

代码语言:javascript
复制
 1 package cn.itcast_03;
 2 
 3 public class Student {
 4     // 成员变量
 5     private String name;
 6     private int age;
 7 
 8     // 构造方法
 9     public Student() {
10         super();
11     }
12 
13     public Student(String name, int age) {
14         super();
15         this.name = name;
16         this.age = age;
17     }
18 
19     // 成员方法
20     // getXxx()/setXxx()
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public int getAge() {
30         return age;
31     }
32 
33     public void setAge(int age) {
34         this.age = age;
35     }
36 
37     @Override
38     public String toString() {
39         return "Student [name=" + name + ", age=" + age + "]";
40     }
41     
42 }
代码语言:javascript
复制
 1 package cn.itcast_03;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collection;
 5 import java.util.Iterator;
 6 
 7 /*
 8  * 练习:用集合存储5个学生对象,并把学生对象进行遍历。用迭代器进行遍历。
 9  * 
10  * 注意:
11  *         A:自己的类名不要和我们学习的要使用的API中的类名相同。
12  *         B:复制代码的时候,很容易把那个类所在的包也导入过来,容易出现不能理解的问题。
13  */
14 public class IteratorTest {
15     public static void main(String[] args) {
16         // 创建集合对象
17         Collection c = new ArrayList();
18 
19         // 创建学生对象
20         Student s1 = new Student("林青霞", 27);
21         Student s2 = new Student("风清扬", 30);
22         Student s3 = new Student("令狐冲", 33);
23         Student s4 = new Student("武鑫鑫", 25);
24         Student s5 = new Student("刘晓曲", 22);
25 
26         // 把学生添加到集合中
27         c.add(s1);
28         c.add(s2);
29         c.add(s3);
30         c.add(s4);
31         c.add(s5);
32 
33         // 遍历
34         Iterator it = c.iterator();
35         while (it.hasNext()) {
36             // System.out.println(it.next()); // 重写了toString()方法
37             Student s = (Student) it.next();  // 向下转型
38             System.out.println(s.getName() + "---" + s.getAge());
39         }
40     }
41 }

迭代器使用出现的2个想问题解释: 问题1:能用while循环写这个程序,我能不能用for循环呢?           答:能。用for循环改写,遍历完成后,it这个对象就变成垃圾了,可以被JVM的垃圾回收器进行回收了,效率高,但是结构不是特别明朗。 问题2:不要多次使用it.next()方法,因为每次使用都去访问一个对象。           //System.out.println(((Student) it.next()).getName() + "---" + ((Student) it.next()).getAge());           //NoSuchElementException 不要多次使用it.next()方法。 --------------------------------------- (7)迭代器 A:迭代器是集合的获取元素的方式。 B:迭代器是依赖于集合而存在的。       因为迭代器是通过集合调用集合的方法而得到的。即必须先有集合,然后才有迭代器。 Collection接口的成员方法         Iterator iterator()   迭代器,集合的专用遍历方式。 Iterator接口的成员方法         boolean hasNext()    判断如果仍有元素可以迭代,则返回 true。         Object next()     获取元素,并移动到下一个位置。         NoSuchElementException 没有这样的元素异常,因为你已经找到最后了。 C:迭代器的原理图解和源码浅析 a:迭代器为什么定义了一个接口而不是实现类?         假如把迭代器定义为一个类,这样我们就可以创建该类的对象,调用该类的方法来实现集合的遍历了。         但是,java中提供了很多的集合类,而这些集合类的数据结构是不同,所以它们的存储方法也是不同的,         进而它们的遍历方法也是不一样的,最终就没有把迭代器定义为一个类了。 (因为定义成一个迭代器类就是一个具体的实现了,既然是具体实现那么它们的遍历方式就是一样的了)         而无论是那种集合,都应该具备获取元素的功能,并且最好辅助以判断的功能,这样在获取前,先判断,就不容易出错。         也就是说,判断和获取功能应该是一个集合遍历所具备的,而每种集合的遍历方式又不太一样,         所以把这两个功能给提取出来,并不提供具体的实现,而这种方式叫做接口。         那么,真正的具体的实现类在哪里呢?         在真正的具体的子类中,是以内部类的方式体现的。           (因为在子类中要包含两个方法)         如下图所示:

b:迭代器的内部类实现源码浅析

代码语言:javascript
复制
 1 -----------------------------------------------------------------------------
 2 public interface Inteator {
 3     public abstract boolean hasNext(); // 注意:默认方法前有public abstract修饰,是接口中方法的默认修饰符
 4     public abstract Object next();     // 注意:默认方法前有public abstract修饰,是接口中方法的默认修饰符
 5 }
 6 
 7 public interface Iterable {
 8     Iterator iterator(); // 没有具体实现,注意:默认方法前有public abstract修饰,是接口中方法的默认修饰符
 9 }
10 -----------------------------------------------------------------------------
11 public interface Collection extends Iterable {
12     Iterator iterator(); // 没有具体实现,注意:默认方法前有public abstract修饰,是接口中方法的默认修饰符
13 }
14 
15 public interface List extends Collection {
16     Iterator iterator(); // 没有具体实现,注意:默认方法前有public abstract修饰,是接口中方法的默认修饰符
17 }
18 -----------------------------------------------------------------------------
19 public class ArrayList implements List {
20     public Iterator iterator() { // 具体实现
21         return new Itr();
22     }
23     
24     private class Itr implements Iterator { // Itr是Iterator接口的实现类
25         public boolean hasNext() {}
26         public Object next(){} 
27     }
28 }
29 -----------------------------------------------------------------------------
30 Collection c = new ArrayList();
31 c.add("hello");
32 c.add("world");
33 c.add("java");
34 Iterator it = c.iterator();     // new Itr();
35 while(it.hasNext()) {
36     String s = (String)it.next();
37     System.out.println(s);
38 }
39 -----------------------------------------------------------------------------

--------------------------------------- (8)Collection集合的案例(遍历方式:迭代器方式)(要求:用记事本默写) 集合的使用步骤:       A:创建集合对象       B:创建元素对象       C:把元素添加到集合       D:遍历集合         a:通过集合对象获取迭代器对象         b:通过迭代器对象的hasNext()方法判断是否有元素         c:通过迭代器对象的next()方法获取元素并移动到下一个位置 A:存储字符串并遍历

代码语言:javascript
复制
            import java.util.Collection;
            import java.util.ArrayList;
            import java.util.Iterator;

            public class CollectionDemo {
                public static void main(String[] args) {
                    // 创建集合对象
                    Collection c = new ArrayList();
                    
                    // 创建元素对象
                    String s = new String("hello");
                    // 把元素添加到结合
                    c.add(s);
                    c.add("world");
                    c.add("java");
                    
                    // 遍历集合
                    // 通过集合对象获取迭代器对象
                    Iterator it = c.iterator();
                    while (it.hasNext()) {
                        String s1 = (String) it.next();
                        System.out.println(s1);
                    }
                }
            }

--------------------------------------- B:存储自定义对象并遍历

代码语言:javascript
复制
            public class Student {
                private String name;
                private int age;

                public Student() {
                    super();
                }

                public Student(String name, int age) {
                    super();
                    this.name = name;
                    this.age = age;
                }

                public String getName() {
                    return name;
                }

                public void setName(String name) {
                    this.name = name;
                }

                public int getAge() {
                    return age;
                }

                public void setAge(int age) {
                    this.age = age;
                }

            }
代码语言:javascript
复制
            import java.util.Collection;
            import java.util.ArrayList;
            import java.util.Iterator;
            
            public class StudentDemo {
                public static void main(String[] args) {
                    // 创建集合对象
                    Collection c = new ArrayList();
                    
                    // 创建学生对象
                    Student s1 = new Student("貂蝉", 25); // 含参构造
                    Student s2 = new Student("小乔", 16);
                    Student s3 = new Student("黄月英", 20);
                    Student s4 = new Student(); // 无参构造
                    s4.setName("大乔");
                    s4.setAge(26);

                    // 把学生对象添加到集合对象中
                    c.add(s1);
                    c.add(s2);
                    c.add(s3);
                    c.add(s4);
                    c.add(new Student("孙尚香", 18)); // 匿名对象
                    
                    // 遍历集合
                    Iterator it = c.iterator();
                    while (it.hasNext()) {
                        Student s = (Student) it.next();
                        System.out.println(s.getName() + "---" + s.getAge());
                    }
                }
            }

----------------------------------------------------------------------------- 3:集合(List接口)(掌握) (1)List是Collection的子接口 特点:有序(存储顺序和取出顺序一致),有索引,可以存储重复元素。 (2)List的特有功能(注意:默认方法前有public abstract修饰) A:添加功能       void add(int index, Object element)   在指定位置添加元素 B:删除功能       Object remove(int index)   根据索引删除元素,返回被删除的元素 C:获取功能       Object get(int index)         获取指定位置的元素 D:列表迭代器功能       ListIterator listIterator()     List集合特有的迭代器 E:修改功能       Object set(int index, Object element)   根据索引修改元素,返回被修该的元素 --------------------------------------- (3)List集合的特有遍历功能     A:由size()和get()结合。     B:代码演示

代码语言:javascript
复制
 1         import java.util.List;
 2         import java.util.ArrayList;
 3         import java.util.Iterator;
 4 
 5         public class ListDemo {
 6             public static void main(String[] args) {
 7                 // 创建集合对象
 8                 List list = new ArrayList();
 9                 
10                 // 创建元素对象,并添加
11                 list.add("hello");
12                 list.add("wprld");
13                 list.add("java");
14                 
15                 // 通过集合对象获取迭代器对象
16                 Iterator it = list.iterator();
17                 // 迭代器遍历集合
18                 while (it.hasNext()) {
19                     String s = (String) it.next();
20                     System.out.println(s);
21                 }
22                 
23                 // 普通for循环遍历集合
24                 for (int x = 0; x < list.size(); x++) {
25                     String s = (String) list.get(x);
26                     System.out.println(s);
27                 }
28             }
29         }

--------------------------------------- (4)列表迭代器的特有功能(了解)     Object previous()     获取上一个元素     boolean hasPrevious()    判断是否有元素 注意:ListIterator可以实现逆向遍历,但是必须先正向遍历,才能逆向遍历,所以一般无意义,不使用。 (5)ConcurrentModificationException 并发修改异常     当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。 A:出现的现象       迭代器在遍历集合时,用集合去修改集合元素。 B:产生的原因       迭代器是依赖于集合而存在的,在判断成功后,集合中新添加了元素,集合发生了改变,而迭代器却不知道,所以就报错了,这个错叫并发修改异常。       其实这个问题描述的是:迭代器在遍历元素的时候,通过集合是不能修改元素的。  C:解决的方案  a:迭代器迭代元素,用列表迭代器(ListIterator)修改元素         元素是跟在刚才迭代的元素后面的。 注意:Iterator迭代器却没有添加功能,所以我们使用其子接口ListIterator列表迭代器。 b:集合遍历元素,用集合修改元素(普通for循环:size()和get())         元素是在最后添加的。(即元素添加在集合的末尾) --------------------------------------- (6)常见的数据结构以及其优缺点     A:栈       先进后出     B:队列      先进先出     C:数组      查询快,增删慢     D:链表      查询慢,增删快     E:树     F:哈希表     如下图所示:

--------------------------------------- (7)List的子类特点(面试题) ArrayList       底层数据结构是数组,查询快,增删慢。       线程不安全,效率高。 Vector       底层数据结构是数组,查询快,增删慢。       线程安全,效率低。 LinkedList       底层数据结构是链表,查询慢,增删快。       线程不安全,效率高。     List有三个儿子,我们到底使用谁呢? 看需求(看情况)。     分析: 要安全吗?         要:Vector(即使要,也不使用这个,后面有替代的)         不要:ArrayList或者LinkedList 查询多:ArrayList 增删多:LinkedList 什么都不知道,就用ArrayList。 --------------------------------------- (8)List集合的案例(遍历方式:迭代器和普通for循环)     A:存储字符串并遍历

      示例代码如下:

代码语言:javascript
复制
 1 import java.util.List;
 2 import java.util.ArrayList;
 3 import java.util.Iterator;
 4 
 5 public class ListDemo {
 6     public static void main(String[] args) {
 7         // 创建集合对象
 8         List list = new ArrayList();
 9         
10         // 创建元素对象,并添加
11         list.add("hello");
12         list.add("wprld");
13         list.add("java");
14         
15         // 通过集合对象获取迭代器对象
16         Iterator it = list.iterator();
17         // 迭代器遍历集合
18         while (it.hasNext()) {
19             String s = (String) it.next();
20             System.out.println(s);
21         }
22         
23         // 普通for循环遍历集合
24         for (int x = 0; x < list.size(); x++) {
25             String s = (String) list.get(x);
26             System.out.println(s);
27         }
28     }
29 }

    B:存储自定义对象并遍历

      示例代码如下:

代码语言:javascript
复制
 1 package cn.itcast_03;
 2 
 3 public class Student {
 4     // 成员变量
 5     private String name;
 6     private int age;
 7 
 8     // 构造方法
 9     public Student() {
10         super();
11     }
12 
13     public Student(String name, int age) {
14         super();
15         this.name = name;
16         this.age = age;
17     }
18 
19     // 成员方法
20     // getXxx()/setXxx()
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public int getAge() {
30         return age;
31     }
32 
33     public void setAge(int age) {
34         this.age = age;
35     }
36 }
代码语言:javascript
复制
 1 package cn.itcast_03;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Iterator;
 5 import java.util.List;
 6 
 7 /*
 8  * 存储自定义对象并遍历,遍历方式:迭代器和普通for循环。(size()和get()结合)
 9  */
10 public class ListDemo3 {
11     public static void main(String[] args) {
12         // 创建集合对象
13         List list = new ArrayList();
14 
15         // 创建学生对象
16         Student s1 = new Student("林黛玉", 18);
17         Student s2 = new Student("刘姥姥", 88);
18         Student s3 = new Student("王熙凤", 38);
19 
20         // 把学生添加到集合中
21         list.add(s1);
22         list.add(s2);
23         list.add(s3);
24 
25         // 遍历
26         // 迭代器遍历集合
27         Iterator it = list.iterator();
28         while (it.hasNext()) {
29             Student s = (Student) it.next();
30             System.out.println(s.getName() + "---" + s.getAge());
31         }
32         System.out.println("-----------");
33 
34         // 普通for循环遍历集合
35         for (int x = 0; x < list.size(); x++) {
36             Student s = (Student) list.get(x);
37             System.out.println(s.getName() + "---" + s.getAge());
38         }
39     }
40 }

=============================================================================

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档