Board logo

标题: 技术丶交流 java对象数组的概述和使用(4) [打印本页]

作者: yuyang911220    时间: 2017-4-22 16:52     标题: 技术丶交流 java对象数组的概述和使用(4)

15.13 集合的使用步骤图解
集合的使用步骤:
1.  创建集合对象
2.  创建元素对象
3.  将元素添加到集合
4.  遍历集合
4.1 通过集合对象获取迭代器对象
4.2 通过迭代器对象的hasNext()方法判断是否有元素
4.3 通过迭代器对象的Next()方法获取元素并移动到下一个位置
15.14 迭代器的原理及源码解析
原理:
假设迭代器定义的是一个类,那么就可以创建该类的对象,调用该类的方法来实现集合的遍历,但是Java中提供了很多的集合类,而这些集合类的数据结构是不同的,所以存储的方式和遍历的方式也应该是不同的,进而它们的遍历方式也应该是不一样的。最终就没有定义迭代器类
而无论使用哪种集合都应该具备获取元素的操作,并且最好再辅助与判断功能,也就是说判断功能和获取功能应该是一个集合遍历所具备的,而每种集合的方式又不太一样,所以将这两个功能给提取出来,并不提供具体实现,这种方式就是接口,而真正具体的实现类在具体的子类中以内部类的方式体现的
源码:
public interface Iterator
{
boolean hasNext();
Object next();
}
public interface Iterable
{
Iterator iterator();
}
public interface Collection extends Iterable
{
Iterator iterator();
}
public interface List extends Collection
{
Iterator iterator();
}
public class ArrayList implements List
{
public Iterator iterator()
{
  return new Itr();
}
//内部类
private class Itr implements Iterator
{
  public boolean hasNext() {}
  public Object next(){}
}
}
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
Iterator it = c.iterator();  //new Itr();
while(it.hasNext())
{
String s = (String)it.next();
System.out.println(s);
}

15.15 Collection存储字符串并遍历
1 import java.util.ArrayList;
2 import java.util.Collection;
3 import java.util.Iterator;
4  
5 public class Practice
6 {
7
8    public static void main(String[] args)
9    {
10
11       // 创建集合
12       Collection c = new ArrayList();
13
14       //添加字符串
15       c.add("hello");
16       c.add("你好");
17       c.add("world");
18       c.add("java");
19       c.add("旺财");
20       //通过集合对象获取迭代器对象
21
22       Iterator it = c.iterator();
23       while(it.hasNext())
24
25       {
26          String s = (String)it.next();
27
28          System.out.println(s);
29       }
30      
31    }
32
33 }
15.16 Collection存储学生对象并遍历
1 import java.util.ArrayList;
2 import java.util.Collection;
3 import java.util.Iterator;
4
5 public class Practice
6 {
7     public static void main(String[] args)
8     {
9         // 创建集合
10         Collection c = new ArrayList();
11         //创建学生对象并添加到集合
12         c.add(new Student("小明",23));
13         c.add(new Student("小红",32));
14         c.add(new Student("小强",14));
15         c.add(new Student("旺财",8));
16         c.add(new Student("张三",16));
17         
18         Iterator it = c.iterator();
19         while(it.hasNext())
20         {
21             Student s = (Student)it.next();
22             System.out.println(s.getName()+":"+s.getAge());
23         }
24     }
25 }
15.17 List存储字符串并遍历
1 public class Practice
2 {
3     public static void main(String[] args)
4     {
5         // 创建集合
6         List list = new ArrayList();
7         list.add("hello");
8         list.add("world");
9         list.add("java");
10         
11         Iterator it = list.iterator();
12         while(it.hasNext())
13         {
14             String s = (String)it.next();
15             System.out.println(s);
16         }
17     }
18 }
15.18 List集合的特点
List接口概述:有序的(存取顺序一致)collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
特点:与 set 不同,列表通常允许重复的元素。
15.19 List存储学生对象并遍历
1 public class Practice
2 {
3     public static void main(String[] args)
4     {
5         // 创建集合
6         List list = new ArrayList();
7         //创建学生对象并添加到集合
8         list.add(new Student("小明",23));
9         list.add(new Student("小红",32));
10         list.add(new Student("小强",14));
11         list.add(new Student("旺财",8));
12         list.add(new Student("张三",16));
13         
14         Iterator it = list.iterator();
15         while(it.hasNext())
16         {
17             Student s = (Student)it.next();
18             System.out.println(s.getName()+":"+s.getAge());
19         }
20     }
21 }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0