JDK1.8之集合类< Collection>

Collection的UML类图

在这里插入图片描述
Collection接口是java集合框架的根接口,它继承了Iterable接口,Iterable能够提供元素遍历的功能。

CollectionMethods

方法注释
int size();返回集合的元素数量
boolean isEmpty();判断是否为空
boolean contains(Object o);判断是否包含给定的元素
Iterator iterator();返回此集合元素的迭代器
Object[] toArray();返回一个包含集合所有元素的数组
T[] toArray(T[] a);返回包含集合所有元素的数组,返回数组的运行时类型是指定数组
boolean add(E e);确保这个集合包含指定的元素(可选操作),调用后集合发生改变返回true
boolean remove(Object o);删除指定元素的单个实例,如果存在(可选操作)
boolean containsAll(Collection<?> c);判断是否包含指定集合的所有元素
boolean addAll(Collection<? extends E> c);添加指定集合的所有元素(可选操作),调用后集合发生改变返回true
boolean removeAll(Collection<?> c);移除所有包含在指定集合的元素
boolean retainAll(Collection<?> c);只保留在这个集合的元素包含在指定的集合(可选操作)。
void clear();移除所有元素
boolean equals(Object o);比较
int hashCode();返回hashcode

default方法

JDK1.8之后新加入的default关键字,可以让接口的方法拥有方法体,而实现类不需要强制实现。
删除满足指定谓词的元素集合,即判断输入的对象是否符合某个条件。应该是使用lambda表达式。

	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;
    }
	List<String> list = new ArrayList<String>();
		list.add("1");
		list.add("12");
		list.add("21");
		list.add("212");
		list.add("3");
		list.removeIf(s->s.contains("1"));
		
		System.out.println(list.toString());//[3]

Spliterator是JDK1.8新增的一个可分割迭代器,集合框架中的数据结构都默认实现了spliterator,大大增强了并行处理的能力。

 	default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }
    @Override
	default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }
    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }

Iterable接口

	Iterator<T> iterator();

	default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
	default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0)

顺便贴一下Consumer的源码,Iterable新特性和新增的函数式接口不太了解,欢迎交流,希望大佬指点一下。

	/**
     * Performs this operation on the given argument.
     * 对给定的参数执行这个操作。
     * @param t the input argument
     */
    void accept(T t);

	/**
	 * 返回一个组合的Consumer,它按顺序执行此操作,然后执行{@code after}操作。
	 * 如果执行操作将抛出一个异常,这是传递给调用者的组合操作。
	 * 如果执行该操作将抛出一个异常,after操作将不能进行。
	 */
	default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值