ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
Collection和Iterator接口是List、Set和Queue接口的父接口,该接口里定义的方法即可用于操作Set集合,也可用于操作List和Queue集合:
1.boolean add(Object o):该方法用于向集合里添加一个元素,如果集合对象被添加操作改变了,则返回true。
2.Boolean addAll(Collection c):该方法把指定集合c里的元素全部添加到指定集合里,如果集合对象被添加操作改变了,则返回true。
3.Void clear():清除集合里的所有元素,将集合长度变为零。
4.Boolean contains(Object o):如果包含指定元素,返回true。
5.Boolean containsAll(Collection c):如果包含集合c里的所有元素,返回true。
6.Int size():该方法返回元素的个数。
7.Boolean isEmpty():如果不含任何元素,返回true
8.Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
9.Object[] toArray():返回一个存贮这个集合中元素的数组Object[]
10.Boolean remove(Object o):删除一个数据,成功返回true
11.Boolean removeAll(Collection c):删除包含在集合c里的所有元素,如果集合有改变,返回true
12.Boolean retainAll(Collection c):删除不包含在集合c里的所有元素,如果集合有改变,返回true。
下面程序示范了通过上面方法来操作Collection集合。
程序代码:
1 package com.king.testcollection; 2 3 4 5 import java.util.ArrayList; 6 7 import java.util.Collection; 8 9 import java.util.HashSet; 10 11 import java.util.Iterator; 12 13 14 15 public class TestCollection { 16 17 18 19 /** 20 21 * @author 王者黑桃 22 23 */ 24 25 public static void main(String[] args) { 26 27 Collection c=new ArrayList(); 28 29 //添加元素 30 31 c.add("孙悟空"); 32 33 //虽然集合里不能放基本类型的数值,但Java支持自动装箱 34 35 c.add(6); 36 37 //以下将看到输出结果为:2 38 39 System.out.println("c集合当前的元素个数为:"+c.size()); 40 41 //删除指定元素 42 43 c.remove(6); 44 45 //以下将看到输出结果为:1 46 47 System.out.println("c集合当前的元素个数为:"+c.size()); 48 49 //判断是否包含指定字符串,将看到输出结果为:true 50 51 System.out.println("c集合中是否包含孙悟空字符串:"+c.contains("孙悟空")); 52 53 //添加元素 54 55 c.add("猪八戒"); 56 57 //以下将看到输出结果为:[孙悟空, 猪八戒] 58 59 System.out.println("c集合当前的元素:"+c); 60 61 Collection names=new HashSet(); 62 63 names.add("猪八戒"); 64 65 names.add("沙和尚"); 66 67 //将看到输出结果为:false 68 69 System.out.println("c集合是否完全包含names集合?"+c.containsAll(names)); 70 71 //用c集合减去names集合里的所有元素 72 73 c.removeAll(names); 74 75 //将看到输出结果为:[孙悟空] 76 77 System.out.println("c集合当前的元素:"+c); 78 79 //删除c集合里所有元素 80 81 c.clear(); 82 83 //将看到输出结果为:[] 84 85 System.out.println("c集合当前的元素:"+c); 86 87 //names集合里只剩下c集合里也同时包含的元素 88 89 names.retainAll(c); 90 91 //将看到输出结果为:[] 92 93 System.out.println("names集合当前的元素:"+names); 94 95 96 97 } 98 99 100 101 }
上面程序创建了两个Collection对象,一个c集合,一个names集合。其中c集合为ArrayList,而names集合为HashSet,虽然他们使用的实例类型不同,当把他们当成Collection使用时,使用add,remove,clear等方法来操作集合元素时没有任何区别。
当时用System.out的println方法输出集合对象时,将输出[ele1,ele2,...]的形式,这显然是因为Collection的所有集合实现类重写了toString()方法,该方法可一次性输出集合中的所有元素。
使用Iterator接口遍历集合元素:
Iterator接口是JAVA集合框架的成员,但它与Collection系列、Map系列的集合不一样:这两者主要用于盛装其他对象,而Iterator则用于遍历(即迭代访问)Collection集合中的元素。Iterator对象也被称为迭代器。
Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的同一编程接口,Iterator接口定义了如下三个方法:
1.boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
2.Object next():返回集合里下一个元素。
3.Void remove():删除集合里上一次next方法返回的元素。
通过Iterator来遍历集合元素的程序代码:
1 package com.king.testcollection; 2 3 4 5 import java.util.ArrayList; 6 7 import java.util.Collection; 8 9 import java.util.HashSet; 10 11 import java.util.Iterator; 12 13 14 15 public class TestCollection { 16 17 18 19 /** 20 21 * @author 王者黑桃 22 23 */ 24 25 public static void main(String[] args) { 26 27 //创建一个集合 28 29 Collection names=new HashSet(); 30 31 names.add("猪八戒"); 32 33 names.add("沙和尚"); 34 35 names.add("孙悟空"); 36 37 //获取names集合对应的迭代器 38 39 Iterator it=names.iterator(); 40 41 while(it.hasNext()){ 42 43 //it.next()方法返回的数据类型是Object类型,需要强制类型转换 44 45 String name=(String)it.next(); 46 47 System.out.println(name); 48 49 if(name.equals("沙和尚")){ 50 51 //从集合中删除上次next方法返回的的元素 52 53 it.remove(); 54 55 } 56 57 //对name变量赋值,不会改变集合元素本身 58 59 name="测试字符串"; 60 61 } 62 63 System.out.println(names); 64 65 } 66 67 68 69 }
从上面程序可以看出,Iterator仅用于遍历集合,Iterator本身并不提供盛装对象的能力。如果需要创建Iterator对象,则必须有一个迭代的集合。
使用foreach遍历集合元素:
程序代码:
1 package com.king.testforeach; 2 3 4 5 import java.util.Collection; 6 7 import java.util.HashSet; 8 9 10 11 public class TestForeach { 12 13 14 15 /** 16 17 * @author 王者黑桃 18 19 */ 20 21 public static void main(String[] args) { 22 23 // 创建一个集合 24 25 Collection names=new HashSet(); 26 27 names.add(new String("孙悟空")); 28 29 names.add(new String("猪八戒")); 30 31 names.add(new String("沙和尚")); 32 33 for(Object obj:names){ 34 35 //此处的name变量也不是集合元素本身 36 37 String name=(String)obj; 38 39 System.out.println(name); 40 41 if(name.equals("猪八戒")){ 42 43 //下面代码将会引发ConcurrentModificationException异常 44 45 //names.remove(name); 46 47 } 48 49 } 50 51 System.out.println(names); 52 53 54 55 } 56 57 58 59 }
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
详细请查看:http://edu.csdn.net