- UID
- 1029342
- 性别
- 男
|
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 } |
|