zoukankan      html  css  js  c++  java
  • Cellection

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架。Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。

    Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。

    可以看到Collection并没有直接实现类,而是提供更具体的子接口实现。通过查询API,可以总结出Collection的基本功能。

    1、添加

    boolean add(E e):添加一个元素

    boolean addAll(Collection<? extends E> c):添加一个集合的元素

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    public class CollectionDemo1 {
      public static void main(String[] args) {
        Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
        collection1.add("红楼梦");
        collection1.add("三国演义");
        System.out.println(collection1);
     
        Collection collection2 = new ArrayList();
        collection2.add("西游记");
        collection2.add("水浒传");
     
        collection1.add(collection2);
        System.out.println(collection1);
      }
    }

    输出结果:

    [红楼梦, 三国演义]
    [红楼梦, 三国演义, [西游记, 水浒传]]

    2、删除
    void clear():清空集合中的所有元素

    boolean remove(Object o):移除指定的元素

    boolean removeAll(Collection<?> c):移除一个集合的元素

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    public class CollectionDemo2 {
      public static void main(String[] args) {
        Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
        collection1.add("红楼梦");
        collection1.add("三国演义");
        collection1.add("西游记");
        collection1.add("水浒传");
        System.out.println("初始状态:" + collection1);
     
        boolean b1 = collection1.remove("红楼梦");
        System.out.println("是否移除了元素:" + b1);
        System.out.println("移除一个元素:" + collection1);
        System.out.println();
     
        Collection collection2 = new ArrayList();
        collection2.add("三国演义");
        collection2.add("西游记");
        collection2.add("平凡的世界");
        boolean b2 = collection1.removeAll(collection2); // 移除两个集合的交集,只要有一个元素被移除了,就返回true
        System.out.println("移除一个集合:" + collection1);
        System.out.println("是否移除了元素:" + b2);
        System.out.println();
     
        Collection collection3 = new ArrayList();
        collection3.add("平凡的世界");
        collection3.add("围城");
        boolean b3 = collection1.removeAll(collection3);// 移除两个集合的交集,只要有一个元素被移除了,就返回true
        System.out.println("移除一个集合:" + collection1);
        System.out.println("是否移除了元素:" + b3);
        System.out.println();
     
        collection1.clear();
        System.out.println("清除集合中的所有元素:" + collection1);
      }
    }

    输出结果

    初始状态:[红楼梦, 三国演义, 西游记, 水浒传]
    是否移除了元素:true
    移除一个元素:[三国演义, 西游记, 水浒传]

    移除一个集合:[水浒传]
    是否移除了元素:true

    移除一个集合:[水浒传]
    是否移除了元素:false

    清除集合中的所有元素:[]

    3、判断

    boolean contains(Object o):判断集合是否包含指定元素

    boolean containsAll(Collection<?> c):判断集合是否包含指定的集合元素

    boolean isEmpty():判断集合是否为空

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    public class CollectionDemo3 {
      public static void main(String[] args) {
        Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
        collection1.add("红楼梦");
        collection1.add("三国演义");
        collection1.add("西游记");
        collection1.add("水浒传");
        System.out.println("是否包含红楼梦:" + collection1.contains("红楼梦"));
     
        Collection collection2 = new ArrayList();
        collection2.add("三国演义");
        collection2.add("西游记");
        collection2.add("平凡的世界");
        System.out.println("是否包含一个集合中元素:" + collection1.containsAll(collection2)); // 包含所有才包含
     
        System.out.println("集合是否为空:" + collection1.isEmpty());
      }
    }

    输出结果

    是否包含红楼梦:true
    是否包含一个集合中元素:false
    集合是否为空:false

    4、获取长度

    int size():获取集合中元素的个数

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    public class CollectionDemo4 {
      public static void main(String[] args) {
        Collection collection = new ArrayList(); // Collection是接口,实例化其子类
        collection.add("红楼梦");
        collection.add("三国演义");
        collection.add("西游记");
        collection.add("水浒传");
        System.out.println("元素个数:" + collection.size());
      }
    }

    输出结果

    元素个数:4

    5、交集

    boolean retainAll(Collection<?> c):保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    public class CollectionDemo5 {
      public static void main(String[] args) {
        Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
        collection1.add("红楼梦");
        collection1.add("三国演义");
        collection1.add("西游记");
        collection1.add("水浒传");
     
        Collection collection2 = new ArrayList();
        collection2.add("西游记");
        collection2.add("水浒传");
        System.out.println(collection1.retainAll(collection2));
        System.out.println("collection1:" + collection1);
        System.out.println("collection2:" + collection2);
     
        Collection collection3 = new ArrayList();
        collection3.add("西游记");
        collection3.add("平凡的世界");
        System.out.println(collection1.retainAll(collection3));
        System.out.println("collection1: " + collection1);
        System.out.println("collection2: " + collection2);
      }
    }

    输出结果

    true
    collection1:[西游记, 水浒传]
    collection2:[西游记, 水浒传]
    true
    collection1: [西游记]
    collection2: [西游记, 水浒传]

    从上面结果分析得知,collection1集合与collection2集合做交集运算,最后的结果保留在collection1中,而collection2中的元素保持不变。

    6、集合转数组

    Object[] toArray():集合转数组

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    public class CollectionDemo6 {
      public static void main(String[] args) {
        Collection collection = new ArrayList(); // Collection是接口,实例化其子类
        collection.add("红楼梦");
        collection.add("三国演义");
        collection.add("西游记");
        collection.add("水浒传");
     
        Object[] objects = collection.toArray();
     
        for (Object object : objects) {
          System.out.println(object);
        }
      }
    }

    输出结果:

    红楼梦
    三国演义
    西游记
    水浒传

    7、遍历

    Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器,迭代器是集合特有的遍历方式

    其中Iterator是一个接口,其有3个方法

    boolean hasNext():如果仍有元素可以迭代,则返回 true。

    E next():返回迭代的下一个元素,并移动到下一个位置。

    void remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素

    示例代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package collection;
     
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
     
    public class CollectionDemo7 {
      public static void main(String[] args) {
        Collection collection = new ArrayList(); // Collection是接口,实例化其子类
        collection.add("红楼梦");
        collection.add("三国演义");
        collection.add("西游记");
        collection.add("水浒传");
     
        Iterator it = collection.iterator();
     
        while (it.hasNext()) {
          Object object = it.next();
          System.out.println(object);
        }
     
        it.remove(); // 如果未调用next方法,则会抛出IllegalStateException异常
        System.out.println(collection);
      }
    }

    输出结果:

    红楼梦
    三国演义
    西游记
    水浒传
    [红楼梦, 三国演义, 西游记]

  • 相关阅读:
    Spring 总结
    分布式缓存Memcache
    Docker原理 -- namespace与CGroup
    JDK源码分析--Collections
    React生命周期总结
    【转】前端优化的35条
    http缓存与cdn相关技术
    跨域处理
    sequekize
    orm2
  • 原文地址:https://www.cnblogs.com/zhoanghua/p/9289547.html
Copyright © 2011-2022 走看看