JAVA基础之“集合”

一、集合接口

设计意义:数据类型的一种(源于数据结构),一般语言所必须具备的

1.集合的接口与实现分离(与普通的数据结构类似),也就是每一个实现的集合都有一个相应的接口,示例如下:

/*接口例子*/
interface Queue<E>
{
    void add(E element);
    E remove();
    int size();
}

/*对应实现的例子*/
class CirularArrayQueue<E> implements Queue<E>
{
    CircularrArrayQueue(int capacity){......};
    public void add(E element){......};
    public E remove(){......};
    ......
}

接口与实现分离目的:使用多态减少代码的修改量(“增加内聚,降低耦合”思想);示例如下:

/*结合中使用接口的意义*/
 Queue<Customer> expressLane = new CirularArrayQueue<>(100);
expressLane.add(new Customer("Harry"));

/*多态随时替换子类*/
 Queue<Customer> expressLane = new LinkedListQueue<>();
expressLane.add(new Customer("Harry"));

2.java类库的集合接口和迭代器接口

迭代器:用于访问对应集合的每个元素的一个工具;

迭代器有自己的接口,使用其中的方法可以有效遍历元素,且有一种简写方法:如下:

 1 /*迭代器接口中的方法*/
 2 public interface Iterator<E>
 3 {
 4     E next(); //通过反复使用next可以访问集合中的每个元素
 5     boolean hasNext();
 6     void remove();
 7 }
 8 
 9 /*经典迭代器遍历元素方法*/
10 Collection<String> c = ...;
11 Iterator<String> iter = c.itertor();
12 while(iter.hasNext()){
13    String element = iter.next();
14    ...
15 }
16 
17 /*Iterator简写的for each方法*/
18 for(String elements : c){
19     /*做一些对每个元素的处理*/
20 }

关于for each使用的解释:for each可以在任何实现了Iterable接口的对象中使用,而Iterable接口中调用了泛型的Iterator方法,而所有集合类的基础接口Collection则扩展了Iterable接口,所以标准类库中的任何接口都可以使用“for each”循环;

需要注意一点:集合分为了有序集合和无序集合,所以遍历的时候,有序集合会根据相应顺序遍历,而无序集合则是随机的;但是都可以遍历到所有的元素;

猜你喜欢

转载自www.cnblogs.com/silence-fire/p/9238491.html