疯狂Java学习笔记(34)----------Iterator、Collection接口以及foreach
来源:互联网 发布:小志传奇转生数据 编辑:程序博客网 时间:2024/05/16 11:03
Iterator、Collection接口:
如下图:Iterator、Collection同在一个包中:
红字部分使我们经常遇到的,但是遇到又不知道怎么去理解,去应用它!
Collection是最基本集合接口,它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下:
2、 Set接口
Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复。
特征:无序且不可重复。
3、 List接口
List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复。
特征:有序且可重复。
两个重要的实现类:ArrayList和LinkedList
1.ArrayList特点是有序可重复的
2.LinkedList是一个双向链表结构的。
4、Map接口
Map也是接口,但没有继承Collection接口。该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。
5.Iterator接口
Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合访问器,用于循环访问集合中的对象。
所有实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,Iterator接口方法能以迭代方式逐个访问集合中各个元素,并可以从Collection中除去适当的元素。
下面将是展现真正的实力了!
CollectionTest.java代码
package com.haixu.collection;import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;/** * Collection集合内部方法的学习! * */public class CollectionTest { public static void main(String[] args) { Collection<String> c =new ArrayList<String>(); //向集合内添加元素 c.add("Hi!"); c.add("Haixu"); //输出各个元素 System.out.println("c的集合元素个数:"+c.size()); //虽然集合里不能放基本类型的值,但Java支持自动装箱! //删除指定的元素 c.remove(2); System.out.println("c的集合元素个数:"+c.size()); //判断集合c中是否包含字符串"Haixu" System.out.println("c的集合中是否有\"Haixu\"字符串:" + c.contains("Haixu")); //继续向集合内添加元素并将集合元素输出出来 c.add("You are very perfect!"); System.out.println("c的集合中的元素为:" + c); //用HsahSet定义对象c1 Collection<String> c1 = new HashSet<String>(); //添加元素 c1.add("Believe yourself!"); c1.add("Haixu!"); c1.add("you will success!"); System.out.println(c1); //判断c集合是否完全包含c1集合 System.out.println("c集合是否完全包含c1集合?" + c.contains(c1)); c.removeAll(c1); System.out.println("c的集合元素为:" + c); //清空集合c c.clear(); System.out.println("c的集合元素为:" + c); c1.retainAll(c); System.out.println("c1的集合元素为:" + c1); }}
IteratorTest.java
package com.haixu.collection;import java.util.Collection;import java.util.HashSet;import java.util.Iterator;/* * Iterator 用于遍历集合 * */public class IteratorTest { public static void main(String[] args) { Collection<String> str1 = new HashSet<String>(); //添加元素 str1.add("Everything that you can do!"); str1.add("if only you hard work continuely!"); str1.add("Success will belong to you!"); //获取str1集合对应的迭代器 Iterator<String> it = str1.iterator(); while(it.hasNext()){ String str = (String)it.next(); System.out.println(str); if(str.equals("Everything that you can do!")); it.remove(); str = "Everything that you can do!"; System.out.println(str); } System.out.println(str1); } }
foreach循环来迭代访问Collection集合里的元素跟家简洁一点!
foreach循环迭代方位集合元素是,该集合不可改变否则将会引发ConcurrentModificationException异常!
ForeEachTest.java
package com.haixu.collection;import java.util.Collection;import java.util.HashSet;/* * foreeach 循环来迭代Collection集合里的元素 * */public class ForeEachTest {public static void main(String[] args) {Collection<String> str1 = new HashSet<String>();//添加元素str1.add("Everything that you can do!");str1.add("if only you hard work continuely!");str1.add("Success will belong to you!");for(Object obj : str1){String str = (String) obj;System.out.println(str);if(str.equals("Everything that you can do!")){//下面的代码会引发异常 //是故意的!str1.remove(str);}}System.out.println(str1);}}
以上就是各个接口的应用和使用情况。
因为其中有一个返回值为Iterator<E>类型的iterator()方法,所以,Collection接口必须实现Iterator接口
实现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
- 疯狂Java学习笔记(34)----------Iterator、Collection接口以及foreach
- Java学习笔记(34)----------Iterator、Collection接口以及foreach
- 疯狂Java学习笔记(35)----------Collection接口
- Collection、Iterator接口、foreach循环
- [疯狂Java]集合:Java集合框架、Collection、forEach遍历器/Consumer函数接口、forEach遍历集合
- java学习笔记-foreach与iterator
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
- Java学习笔记(十一)Collections framework之collection接口,iterator接口
- [学习笔记]Java集合框架以及Collection顶层接口
- Java学习笔记(35)----------Collection接口
- (32)Java学习笔记——集合框架 / Collection 接口 / Iterator 迭代器
- Java集合类的学习(二)——Collection接口和Iterator迭代器
- Collection和Iterator学习笔记
- Java集合----概述、Collection接口、Iterator接口
- java集合 - Collection - List - Set - Map - Iterator 学习笔记
- [java学习笔记]Iterator和Iterable接口
- Java中Collection和Iterator接口
- java collection接口笔记
- hdu 4292 Food isap+拆点
- qt 剪切板 数据恢复
- 泛函编程(26)-泛函数据类型-Monad-Applicative Functor Traversal
- LeetCode 144 Binary Tree Preorder Traversal
- MVC的基本概念
- 疯狂Java学习笔记(34)----------Iterator、Collection接口以及foreach
- qt 文件对话框,中文文件名乱码
- poj 3348
- 匿名对象与JavaScriptSerializer
- QT 任意区域截图
- 最长上升子序列nlogn算法
- 几种PHP实现网页抓取的程序代码
- java GUI,贷款服务器
- Qt QToolBar