Java中Collection类学习笔记

Collection接口


Collection集合的顶层接口,也正因为其是一个接口类型,所以Collection是不可以被实例化的。

但是在Collection接口的基础上,又衍生出了许许多多的子接口和可实现类。

Collection体系集合

Collection接口作为根接口,在此基础上,衍生出了List子接口和Set子接口,两种接口又具有不同的特点。

List:内部元素有序,有下标,元素可重复。

Set:内部元素无序,无下标,元素不重复。

之后再List子接口和Set子接口上又衍生出了许许多多的实现类,

List:

  1. ArrayList
  2. LinkedList
  3. Vector

Set:

  1. HashSet
  2. TreeSet

具体的继承关系如下图所示:
在这里插入图片描述

Collection接口中的方法

对于一个集合框架来说,最重要的就是增加元素、删除元素和一些判断功能,以及遍历集合的功能。

增加元素

boolean add(E e);

该函数向collection中添加一个元素,确保此 collection 包含指定的元素(可选操作)。如果此 collection 由于调用而发生更改,则返回 true。(如果此 collection 不允许有重复元素,并且已经包含了指定的元素,则返回 false。)

boolean addAll(Collection<? extends E> c);

将指定 collection© 中的所有元素都添加到此 collection 中(可选操作)。如果在进行此操作的同时修改指定的 collection,那么此操作行为是不确定的。(这意味着如果指定的 collection© 是此 collection,并且此 collection 为非空,那么此调用的行为是不确定的。)

如果此 collection 由于调用而发生更改,则返回 true.

删除元素

void clear();

移除此 collection 中的所有元素(可选操作)。

boolean remove(Object o);

从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。如果存在多个相同元素,则只删除最先加入的那个元素。同时这里的Object o物体默认指的是地址相同,而不是值相同,除非重写equals方法。

如果此调用将移除一个元素,则返回 true

boolean removeAll(Collection<?> c);

移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。此调用返回后,collection 中将不包含任何与指定 collection 相同的元素,比较元素是否相同是也是默认比较地址,若要比较内容,需要重写equals方法。

如果此 collection 由于调用而发生更改,则返回 true

判断功能

boolean contains(Object o);

如果此 collection 包含指定的元素,则返回 true。这里的比较也是默认使用地址比较,想要比较内容则需要重写equals函数。

boolean containsAll(Collection<?> c);

如果此 collection 包含指定 collection 中的所有元素,则返回 true。

boolean isEmpty();

如果此 collection 不包含元素,则返回 true。

遍历集合

遍历集合的时候,一般来说有两种方法进行遍历。第一种是foreach方法来进行遍历,但是这个方法使用较少,更多的情况下使用的还是迭代器来对集合进行遍历。

迭代器是集合的专用方式,用来实现集合的遍历,一般通过下列函数来获取某个集合的迭代器。

Iterator<E> iterator();

迭代器中一般使用三个方法,如下所示。

boolean hasNext();

E next();

default void remove() {
        throw new UnsupportedOperationException("remove");
    }

其中hasNext函数用于判断此位置是否有元素,next函数用于获取当前元素,并移动到下一个位置,remove函数用于删除当前元素

长度功能

集合中主要使用size函数来获取该集合中元素的个数,也就是集合的长度。

int size();

交集功能

仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection© 中的所有元素。

简单来说,两个集合交集的元素给原集合,并判断原集合是否改变,改变则true,不变则false

boolean retainAll(Collection<?> c);

样例代码

public static void main(String[] args) {
        // 创建集合
        Collection<String> collection = new ArrayList<String>();

        // 1. 添加元素
        collection.add("苹果");
        collection.add("西瓜");
        collection.add("榴莲");
        collection.add("苹果");
        System.out.println("元素个数:" + collection.size());

        // 2. 删除元素
        collection.remove("苹果");
        System.out.println("元素个数:" + collection.size());

        // 3. 遍历元素

        // 3.1 使用增强for进行遍历
        for (Object o : collection) {
            System.out.println(o);
        }

        // 3.2 使用迭代器(专门用来遍历集合的一种方式)
        // hasNext():   有没有下一个元素
        // next():  获取下一个元素
        // remove():    删除当前元素
        Iterator<String> it = collection.iterator();
        while(it.hasNext()) {
            String s = (String)it.next();
            System.out.println(s);
            // 在使用迭代器的过程中,不可以使用collection中的remove函数删除元素
            it.remove();
        }
        System.out.println(collection.size());

        // 4.判断元素是否存在
        collection.add("apple");
        System.out.println(collection.contains("apple"));
        System.out.println(collection.contains("banana"));

        // 判断是否为空
        System.out.println(collection.isEmpty());

        int a = 1;
        System.out.println(a = 2);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值