黑马程序员-Java基础,Java集合Collection和Iterator接口

  ASP.Net+Android+IOS开发.Net培训、期待与您交流!

CollectionIterator接口是ListSetQueue接口的父接口,该接口里定义的方法即可用于操作Set集合,也可用于操作ListQueue集合:

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.outprintln方法输出集合对象时,将输出[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

 

 

原文地址:https://www.cnblogs.com/super614508584/p/3505965.html