Java数据结构详解(一)-Collection接口

Java数据结构-collection接口

一,Collection接口结构图

这里写图片描述

Collection接口详解

collection是一个被高度抽象出来的接口、提供基本的操作数据的行为、属性的定义.
collection api介绍:

public interface Collection<E> extends Iterable<E> {

/**
返回当前collection的逻辑大小
*/
int size();

/**
* 返回collection是否为空 为空返回TRUE,  不为空返回FALSE。
*/
boolean isEmpty();

//如果collection包含元素 o 则返回TRUE,否则返回FALSE。
boolean contains(Object o);

//返回此collection的迭代器iterator。
Iterator<E> iterator();

//返回包含当前collection的所有元素的数组
Object[] toArray();

//返回以T类型的包含所有元素的数组
<T> T[] toArray(T[] a);

//确保此 collection 包含指定的元素 可选操作
boolean add(E e);

//移除指定元素 o
boolean remove(Object o);

//如果当前collection包含指定collection c的所有元素 则返回TRUE。
boolean containsAll(Collection<?> c);

//将指定collection的所有元素添加到当前collection中
boolean addAll(Collection<? extends E> c);

//在当前collection中删除包含指定collection中的所有元素
boolean removeAll(Collection<?> c);


/**Java8新增的方法 新增修饰符default 可以在接口中实现方法
*按照指定过滤器filter规则 移除元素
* @since 1.8
*/
default boolean removeIf(Predicate<? super E> filter) {
        Objects.requireNonNull(filter);
        boolean removed = false;
        final Iterator<E> each = iterator();
        while (each.hasNext()) {
            if (filter.test(each.next())) {
                each.remove();
                removed = true;
            }
        }
        return removed;
    }

//在此collection种仅保留 指定collection中存在的元素
//换句话说就是 移除此collection中除了C中的所有元素
boolean retainAll(Collection<?> c);


//删除此collection中所有的元素。
void clear();

//将此collection与指定元素进行比较
boolean equals(Object o);

//返回此collection的hash码
int hashCode();

可以说collection是Java数据结构队列形式存储的顶级 接口 ,JDK不提供直接实现,而是下面又细分了set List queue等子接口。

所有实现了collection的(通过子接口set List queue等实现)的类应该提供两个标准的构造函数。

  • 一个是无参构造器void
  • 一个是有单个类型参数的构造器

二,详细的结构图

这里写图片描述

三,abstraCollection

abstractCollection 抽象类简介:
AbstractCollection是一个实现Collection接口的抽象类,该类没有其他的额外方法,该类里面有队Collection的简单实现,但是对于子类来说,必须要实现

public abstract int size();
public abstract Iterator<E> iterator();

这两个方法,AbstractCollection抽象类除了上面的两个方法没有实现,其他方法都提供了简单的实现。

另外AbstractCollection的add方法:

    public boolean add(E e) {
        throw new UnsupportedOperationException();
    }

抽象类AbstractCollection中对 add方法的实现 只是抛出异常。不同数据类型的子类应该实现不同的add 方法。

对于AbstractCollection 的总结:

/** 
 * 此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作。  
 *  
 * 子类要继承此抽象类、 
 * 1、必须提供两个构造方法、一个无参一个有参。 
 * 2、必须重写抽象方法 Iterator<E> iterator();方法体中必须有hasNext()和next()两个方法、同时必须实现remove方法 用于操作集合中元素。 
 * 3、一般要重写add方法、否则子类调用add方法会抛UnsupportedOperationException异常。 
 * 子类通常要重写此类中的方法已得到更有效的实现、 
 */  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值