zoukankan      html  css  js  c++  java
  • 黑马程序员-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

     

     

  • 相关阅读:
    2016第34周三
    2016第34周二
    Spring中资源的加载ResourceLoader
    Spring的资源抽象Resource2实体类
    Spring资源抽象Resource
    SQL Server死锁产生原因及解决办法 .
    sql server中同时执行select和update语句死锁问题
    数据库死锁实例分析及解决方法
    一次查找sqlserver死锁的经历
    js和Jquery获取选中select值和文本
  • 原文地址:https://www.cnblogs.com/super614508584/p/3505965.html
Copyright © 2011-2022 走看看