码迷,mamicode.com
首页 > 编程语言 > 详细

java集合之Collection架构

时间:2017-08-13 23:20:28      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:概念   object   iterator   next   remove   strong   hash   iterable   架构   

Java集合之Collection架构

首先,我们对Collection进行说明。下面先看看Collection的一些框架类的关系图:

技术分享

  Collection是一个接口,它主要的两个分支是:List 和 Set。List和Set都是接口,它们继承于Collection。List是有序的队列,List中可以有重复的元素;而Set是数学概念中的集合,Set中没有重复元素!List和Set都有它们各自的实现类。 如ArrayList  LinkedList  Vector  Stack

  为了方便,我们抽象出了AbstractCollection抽象类,它实现了Collection中的绝大部分函数;这样,在Collection的实现类中,我们就可以通过继承AbstractCollection省去重复编码。

  AbstractList和AbstractSet都继承于AbstractCollection,具体的List实现类继承于AbstractList,而Set的实现类则继承于AbstractSet。

  另外,Collection中有一个iterator()函数,它的作用是返回一个Iterator接口。通常,我们通过Iterator迭代器来遍历集合。ListIterator是List接口所特有的,在List接口中,通过ListIterator()返回一个ListIterator对象。 接下来,我们看看各个接口和抽象类的介绍;然后,再对实现类进行详细的了解。

  接下来我们来看Collection接口:

  

技术分享
package java.util;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

/**
*继承了Iterable接口,Iterable是一个迭代器接口,里面有返回迭代器的抽象方法
*/
public interface Collection<E> extends Iterable<E> {

    int size();//返回集合元素个数

    boolean isEmpty();//是否为空

    boolean contains(Object o);//集合中是否存在这个对象

    Iterator<E> iterator();//从Iterable中继承而来

    Object[] toArray();//将集合转换为object数组

    <T> T[] toArray(T[] a);//将集合转换特定类型的数组
 
    boolean add(E e);//添加

    boolean remove(Object o);//删除

    boolean containsAll(Collection<?> c);//本集合是否和参数集合相同

    boolean addAll(Collection<? extends E> c);//添加一个集合

    boolean removeAll(Collection<?> c);//删除本集合中所有参数集合中元素

    boolean retainAll(Collection<?> c);//retain保留

    void clear();//清空

    boolean equals(Object o);//Object中方法

    int hashCode();//hash函数

    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;
    }

    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }


    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }


    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }
}
Collection接口

 

java集合之Collection架构

标签:概念   object   iterator   next   remove   strong   hash   iterable   架构   

原文地址:http://www.cnblogs.com/iamdp/p/7355292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!