zoukankan      html  css  js  c++  java
  • Java中的集合(二)单列集合顶层接口------Collection接口

    Java中的集合(二)单列集合顶层接口------Collection接口

            Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法。由于Iterable封装了Iterator迭代器,因此Collection可以使用Iterator迭代器。 Collection用于表示一组单值对象的集合,这些对象也称为元素。 Collection接口定义了一系列抽象方法,规范了对单值类型的集合的操作标准。

    一、Collection子接口或子类

    Collection分别有QueueListSet三个子接口,一个AbstractCollection抽象类。由于Collection接口没有可用的实现类,所以在使用Collection时,必须使用它的子类或子接口。

    二、Collection常用方法

    三、Collection增加和移除元素

     1 String str  = "hello world";
     2 Collection collection = new ArrayList();
     3 collection.add("hello");
     4         
     5 boolean isChange = collection.add(str);
     6 boolean isWas = collection.remove(str);
     7         
     8         
     9 Iterator ite = collection.iterator();
    10          
    11 while(ite.hasNext()) {
    12     System.out.println(ite.next());
    13 }

    (一)、添加元素

    1、使用add(E e)方法向Collection中添加元素,如果Collection的结构改变了,也就是元素添加成功了,该方法就会返回“true“,否则返回“false”;

    2、如果Collection引用的是List接口或List的子类,调用add方法时,如果已经存储有该元素,那么集合中就有两个该元素(因为List接口是有序可重复的);

    3、如果Collection引用的是Set接口或Set的子类,调用add方法时,如果已经存储有该元素,那么不会重复添加,保证集合中只有一个该元素(因为Set接口是无序不可重复的)。

    add(E e)和addAll(Collection<? extends E> c)的区别:

    当传递给方法的参数是一个集合对象时,

    1、add方法添加的集合对象本身;

    2、addAll方法添加的是集合对象当中的所有元素,集合对象本身不会被添加。

    (二)、移除元素

    使用remove(Object obj)方法移除Collection中的元素,如果Collection中存在该元素,执行完成后返回“true”,否则返回“false”。

    使用removeAll(Collection<?> c)方法移除通过参数传递过来的Collection中的所有元素如果传递过来的Collection中某些元素在目标Collection中不存在,这些元素将会忽略。

    retainAll(Collection<?> c)方法正好和removeAll(Collection<?> c)方法相反。不是移除所有给定参数Collection中元素,而是保留保留这些元素,移除其他的元素。

    记住,只有目标Collection中已经存在了这些元素,这些元素才可以保留。在参数Collection中存在而目标Collection中不存在的元素,将不会被新增到目标Collection。它们将被忽略。

    四、检测一个Collection是否包含一个确定的元素

    Collection接口中有两个方法来确定Collection中是否包含一个或多个元素,这两个方法分别为:contains(Object o)和containsAll(Collection<?> c)。

    1、contains(Object o):如果这个Collection含有这个元素,contains()方法将返回true,反之,返回“false”。

    2、containsAll(Collection<?> c):如果这个Collection含有参数Collection中的所有元素,containsAll()方法将返回true,反之,返回“false”。

    五、Collection的大小

    Collection接口可以调用size()方法返回Collection的大小。

    六、Collection的遍历

    1、由于Collection是Iterable接口的,Iterable有封装了Iterator迭代器,所有Collection可以使用迭代器遍历元素;

    2、可以使用foreach循环遍历Collection元素。

    七、AbstractCollection抽象类

    AbstractCollection是Collection接口的一个直接实现类,Collection接口下的子类大多继承自AbstractCollection,比如List的实现类,Set的实现类。除了iterator()和size()方法,它提供了一些其他接口的默认实现,其他集合类可以继承此类来复用。

    AbstractCollection除了提供一些其他接口的默认实现,还定义了两个抽象方法,留给子类实现:

    1、public abstract Iterator<E> iterator();

    2、public abstract int size();

    子类必须实现上面两个抽象方法。另外,AbstractCollection默认不支持添加元素的操作,直接调用add(E e)方法会报UnsupportedOperationException错误。

  • 相关阅读:
    "Emgu.CV.CvInvoke”的类型初始值设定项引发异常 解决办法
    EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字
    yuv420p转为emgucv的图像格式Emgu.CV.Image<Bgr, Byte>
    Emgu.CV/opencv 绘图 线面文字包括中文
    5.9 HTML5 新增表单控件 ---不是特别重要
    5.8 HTML5新结构标签
    5.8 HTML5新结构标签 ---不是特别重要
    5.7 CSS浏览器前缀
    5.6 CSS3 animation动画
    5.5 CSS3 transform变换
  • 原文地址:https://www.cnblogs.com/lingq/p/12727832.html
Copyright © 2011-2022 走看看