Core Java (二十) Iterator,Iterable,Collection接口
来源:互联网 发布:js window.open url 编辑:程序博客网 时间:2024/06/05 20:18
Java集合类库将集合的接口与实现分离。同样的接口,可以有不同的实现。
Java集合类的基本接口是Collection接口。而Collection接口必须实现Iterator接口。
以下图表示集合框架的接口,java.lang以及java.util两个包里的。红色字体部分是OCJP考纲要求的接口。其他部分可以从左向右看,比如Collection的Subinterfaces有List,Set以及Queue等。
Iterator接口
Iterator接口包含三个方法:
public interface Iterator<E>{E next();boolean hasNext();void remove();}以下例子是利用了Iterator接口的着三个方法,实现遍历ArrayList<String>类型。
- 一开始迭代器在所有元素的左边,调用next()之后,迭代器移到第一个和第二个元素之间,next()方法返回迭代器刚刚经过的元素。
- hasNext()若返回True,则表明接下来还有元素,迭代器不在尾部。
- remove()方法必须和next方法一起使用,功能是去除刚刚next方法返回的元素。
package com.xujin;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Test{public static void main(String...arg){Collection<String> a = new ArrayList<String>();a.add("Bob");a.add("Alice");a.add("Lisy");Iterator<String> iter = a.iterator();while(iter.hasNext()){String ele = iter.next();System.out.print(ele + " ");//Bob Alice Lisy }System.out.println();System.out.println(a);//[Bob, Alice, Lisy]Iterator<String> iter2 = a.iterator();iter2.next();iter2.remove();System.out.println(a);//[Alice, Lisy]}}
Iterable接口
Iterable接口仅包含一个方法:
public interface Iterable<E>{Iterator<E> iterator();}
for-each循环可以与任何实现了Iterable接口的对象一起工作。
Collection接口
此接口的方法
public interface Collection<E>{......}
boolean
add(E e)
boolean
addAll(Collection<? extends E> c)
void
clear()
boolean
contains(Object o)
boolean
containsAll(Collection<?> c)
boolean
equals(Object o)
int
hashCode()
boolean
isEmpty()
Iterator<E>
iterator()
boolean
remove(Object o)
boolean
removeAll(Collection<?> c)
boolean
retainAll(Collection<?> c)
int
size()
Object[]
toArray()
<T> T[]
toArray(T[] a)
实现Collection接口的每一个类都要实现以上众多方法,但开发者自己实现很麻烦。所以java提供了AbstractCollection类来编写具体的类。
以下类都实现了Collection接口:
AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentLinkedDeque,ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList,LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector
Collection接口有三个常用的子接口,分别是List,Set,Queue。
- Core Java (二十) Iterator,Iterable,Collection接口
- Core Java (二十) Iterator,Iterable,Collection接口
- Java Collection Iterable Iterator
- Java集合框架复习之Collection接口,iterator接口,iterable接口(二)
- Iterator && Iterable Collection && Map
- Java框架集合:Collection<E>、Iterable<T>和Iterator<E>接口
- java Iterable接口和Iterator迭代器
- java迭代器--Iterator和Iterable接口
- [java学习笔记]Iterator和Iterable接口
- Java迭代 : Iterator和Iterable接口
- java 中 Collection,Iterator,Iterable的简单了解
- Iterator与Iterable接口
- Iterator和Iterable接口
- Java的类集框架二:Collection和Iterator接口
- 源码分析-java-Iterator接口和Iterable<T>接口
- Java集合----概述、Collection接口、Iterator接口
- Java Iterable、Iterator、iterator区别
- Iterable Iterator Java
- JAVA中重写equals()方法为什么要重写hashcode()方法?
- 第三章 BIRT数据源的配置(续)
- android图片适配问题
- 为linux mint 14更换字体(微软雅黑)
- 我创业失败的血泪史
- Core Java (二十) Iterator,Iterable,Collection接口
- linux 下解压zip文件
- Android--将布局保存成图像
- [面试] [反转链表] 三变量提头法
- MFC中实现简单的位图显示
- img src的特殊使用
- unix网络编程-第六章-小结
- 第三章 BIRT数据源的配置(续2)
- java反射