zoukankan      html  css  js  c++  java
  • 《疯狂Java讲义精粹》读书笔记11 集合基础操作

    ===================《疯狂Java讲义精粹》读书笔记11 ------  集合基础操作==========================

      在编程的时候,常常需要集中存放多个数据。我们可以使用数组来存放这些数据,但是数组有一个缺点:数组的长度是不可变的,数组的空间开辟太大会造成浪费,开辟的空间太小又不够用。这时候就可以使用集合了。

      为了保存数量不确定的数据和保存具有映射关系的数据,Java提供了集合类。所有的集合类都在 java.util包下。

      Java的集合类主要由两个接口派生出:Collection和Map.这两个接口又包含了一些子接口或者实现类。

    下图是java 集合体系

      在Set和List接口是Collection派生出来的两个子接口,分别代表了无序集有序集
      Map保存的每项数据都是key-value对,其中key是不可重复的,需要查阅Map中的值时总是根据key来获取

     

    下面列出了Collection定义的操作集合元素的方法:
      · boolean add(Object):确保容器能持有你传给它的那个参数。如果没有把它加进去,就返回false。
      · boolean addAll(Collection):加入参数Collection所含的所有元素。只要加了元素,就返回true。
      · void clear():清除容器所保存的所有元素。
      · boolean contains(Object):如果容器持有参数Object。
      · boolean containsAll(Collection):判断一个集合是否是另一个集合的子集。
      · boolean isEmpty():如果容器里面没有保存任何元素,就返回true。
      · Iterator iterator():返回一个可以在容器的各元素之间移动的Iterator。
      · boolean removeAll(Collection):集合的差。只要删过东西,就返回true。
      · boolean retainAll(Collection):只保存参数Collection所包括的元素(集合论中“交集”的概念)。如果发生过变化,则返回true。
      · int size():返回容器所含元素的数量。
      · Object[] toArray():返回一个包含容器中所有元素的数组。
      · Object[] toArray(Object[] a):返回一个包含容器中所有元素的数组,且这个数组不是普通的Object数组,它的类型应该同参数数组a的类型相同(要做类型转换)。

    下面这个例子演示了常用的集合操作:

     1 import java.util.ArrayList;
     2 import java.util.Collection;
     3 import java.util.HashSet;
     4 import java.util.Iterator;
     5 
     6 
     7 public class IteratorTest {
     8     public static void main(String[] args) {
     9         Collection collection = new ArrayList();
    10         
    11         //添加元素
    12         //虽然Java集合不能放基本类型的值,但Java 1.5之后增加了自动装箱拆功能
    13         collection.add(100);
    14         collection.add(new Boolean(false));
    15         collection.add("Cocoon");
    16         collection.add("Fan");
    17         System.out.println("集合的大小:" + collection.size());
    18         
    19         //用Iterator遍历
    20         Iterator iterator = collection.iterator();
    21         while(iterator.hasNext()){
    22             System.out.println(iterator.next());
    23         }
    24         System.out.println();
    25         
    26         //删除指定的元素
    27         collection.remove(false);
    28         
    29         //用foreach遍历集合
    30         System.out.println("删除元素后集合的大小:" + collection.size());
    31         for (Object object : collection) {
    32             System.out.println(object);
    33         }
    34         System.out.println();        
    35         
    36         Collection collection2 = new HashSet();
    37         collection2.add("Cocoon");
    38         collection2.add(100);
    39         
    40         //判断一个集合是否为另一个集合的子集
    41         System.out.println("collection2 是否为 collection的子集:" 
    42                 + collection.containsAll(collection2));
    43         
    44         //判断一个集合中是否包含某个元素
    45         System.out.println("collection 是否包含 \"Cocoon\"字符串:"
    46                 + collection.contains("Cocoon"));
    47         
    48         //求两个集合的差 A-B
    49         collection.removeAll(collection2);
    50         System.out.println("collection - collection2 = " + collection);
    51         
    52         //求两个集合的并:A+B
    53         collection.addAll(collection2);
    54         System.out.println("collection + collection2 = " + collection);
    55         
    56         //求两个集合的∩: A∩B
    57         collection.retainAll(collection2);
    58         System.out.println("collection ∩ collection2 = " + collection);
    59         
    60         //清空collection中所有的元素
    61         collection.clear();
    62         System.out.println("清空后collection的大小为:" + collection.size());
    63         System.out.println("collection = " + collection);
    64     }
    65 }


    输出的结果:

    集合的大小:4
    100
    false
    Cocoon
    Fan
    
    删除元素后集合的大小:3
    100
    Cocoon
    Fan
    
    collection2 是否为 collection的子集:true
    collection 是否包含 "Cocoon"字符串:true
    collection - collection2 = [Fan]
    collection + collection2 = [Fan, 100, Cocoon]
    collection ∩ collection2 = [100, Cocoon]
    清空后collection的大小为:0
    collection = []


      另外在使用Iterator接口遍历集合元素的时候常用到下面三个方法
        · boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true
        · Object next():返回集合里的下一个元素
        · void remove(): 删除集合里面上一次next方法返回的元素
      实例见上面的19行代码。

      在使用Iterator接口时应注意:
        · Iterator仅用来遍历集合,它本身并不提供盛放对象的能力,如果需要创建Iterator对象,则应该有一个迭代的集合。
        · Iterator对集合元素进行迭代时并不是把集合元素本身传给课迭代器,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值并不会对集合元素本身产生影响。
        · 当使用Iterator迭代访问Collection集合元素是,Collection集合里的元素不能被改变,只有通过Iterator的remove()方法删除上一次next方法返回的集合元素。
    如在Iterator里面修改Collection集合里元素的值

    //会报java.util.ConcurrentModificationException异常
    collection.remove(iterator.next());

    则会报出java.util.ConcurrentModificationException异常。

  • 相关阅读:
    ORA-01113: file xxxx needs media recovery
    Linux rm删除大批量文件
    SQL Server删除distribution数据库
    SQL Server 2008 R2 Service Pack 3 已经发布
    YourSQLDba开源项目发布到codeplex网站了
    ORACLE回收站机制介绍
    ORACLE临时表空间总结
    数据库服务器改名导致Reporting Service不可用的案例
    ORACLE 11g 数据库体系结构图
    ORACLE 10g 数据库体系结构图
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2953312.html
Copyright © 2011-2022 走看看