Java集合系列之Collection接口

Colection接口和Map接口一起构成了Java的集合框架的主干部分,是对于集合类型的数据操作的抽象。

Collection抽象数据类型

ADT
Collection (数据抽象类型名)

Data
数据集合为{a1,a2,a3.....,an},每个数据的数据类型都是DataType.

operations(仅定义逻辑方法,与JDK方法不保持一致)
   InitCollection(); 初始化创建集合
   AddElement(DataType d); 添加集合元素
   RemoveElement(DataType d); 删除集合中元素
   Clear(); 清空集合

Collection接口依赖Iterable接口:
Iterable接口
Iterator接口
-iterator() 返回一个迭代器 iterator
- forEach(Consumer<? super T> action) 为集合内每个元素执行函数action
- default Spliterator< T > spliterator() 返回一个Spliterator并行迭代器
Iterator接口
Iterator接口
方法剖析
- hasNext() 返回类型为boolean,仅当如果迭代器还有下一个元素,返回true
- next() 返回类型为 ,返回迭代器的下一个元素
- remove() default 方法 调用一次next()方法后可以调用一次,从迭代器删除返回的最后一个元素
- forEachRemaining(Consumer<? super E> action) default 方法 Java8新方法,对迭代器中剩余的所有元素执行action

Collection接口
这里写图片描述
- 方法剖析
- add (E e) 向集合内添加指定元素
- addAll(Collection<? extends E> c) addAll(int index, Collection<?extends E> c) 向集合内(指定位置 index)添加另一集合的全部元素
- clear() 清空集合,可用于多次使用单个集合对象,节省资源
- contains(Object o) 判断是否还有某个对象
- containsAll(Collection<?> c) 判断是否含有集合c的所有元素
- parallelStream() java8新特性,使用fork/join框架自动并行处理
- remove(Object o) 移除集合中的一个元素
- removeAll(Collection<> c) 移除集合含有的集合c中的所有元素
- removeIf(Predicate<? super E> filter) 底层迭代调用Predicate接口的test方法
Predicate函数式接口 主要用提供test()方法,该方法返回一个布尔变量
- spliterator() 并行迭代器
- stream() 返回集合的流资源,用于函数式运算
- toArray() 转换成数组
- toArray(T[] a) 将集合转换成对应对象类型的数组

spliterator(splitable iterator可分割迭代器)接口是Java8新增加的迭代器,为了并行遍历数据源中的元素而设计的迭代器,这个可以类比最早Java提供的顺序遍历迭代器Iterator,但一个是顺序遍历,一个是并行遍历

spliterator接口
并行迭代器接口,Java8新增的迭代器接口
Spliterator接口
boolean tryAdvance(Consumer<? super T> action) 该方法会处理每个元素,如果没有元素处理,则应该返回false,否则返回true

Spliterator trySplit() 将一个Spliterator分割成多个Spliterator。分割的Spliteratork可被用于每个子线程进行处理,从而达到并发处理的效果

default void forEachRemaining(T_CONS action) 该方法为接口默认实现方法,循环调用tryAdvance遍历集合内的所有元素

long estimateSize() 集合迭代后的大小

int characteristics() 枚举值,返回Spliterator具有的流特性,枚举为ORDERED | SIZED | SUBSIZED | NONNULL | IMMUTABLE |DISTINCT

default void forEachRemaining(Consumer<? super T> action) 对于集合内每个元素执行action函数

default Comparator<? super T> getComparator() 获取集合的比较器

Consumer接口

Consumer接口

Consumer接口期望使用void accept(T t)方法改变入参的值

void accept(T t) 对于入参t执行当前函数

default Consumer andThen(Consumer<? super T> after) 对入参执行当前函数后,继续执行after函数

    Consumer<String> d=(x) -> System.out.print(x.toLowerCase());
    d.andThen((i) ->                  System.out.println(i.toLowerCase())).accept("AbcD");

Predicate接口

Predicate接口

Predicate用于判断输入参数是否符合要求

Predicate被@FunctionalInterface注解,表示接口只能有一个抽象方法

boolean test(T t) 对于元素t执行当前函数
default Predicate and(Predicate<? super T> other) 判断other非空后,与当前函数做与逻辑判断
default Predicate negate() 对当前函数做非逻辑判断
default Predicate or(Predicate<? super T> other) 判断other非空后,与当期函数做非逻辑判断
static Predicate isEqual(Object targetRef) 判断数据targetRef是否和函数处理的数据equals

    Predicate<String> a=(s) -> s.length()>3;
    Predicate<String> b=(s)  -> s.length()>4;

    Predicate<String> c=Predicate.isEqual("abc");


    System.out.println(c.test("abc"));

    System.out.println(a.and(b).test("abcde"));

    System.out.println(a.or(b).test("abc"));

    System.out.println(a.negate().test("a"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值