Iterable、Collection、List 的常见方法签名以及含义

1.Iterable

集合框架最顶端的接口,实现接口的遍历。迭代器接口


public interface Iterable<T> {
    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);
    }

}

1.1iterator()
这个方法返回的是Iterator的实例。Iterator也是一个接口,为什么不将两个接口合并为一个那?

原因是实现了Iterable的类可以在实现多个Iterator内部类,例如LinkedList中的ListItr和DescendingIterator两个内部类,就分别实现了双向遍历和逆序遍历。通过返回不同的Iterator实现不同的遍历方式,这样更加灵活。如果把两个接口合并,就没法返回不同的Iterator实现类了。

1.2forEach(Consumer<? super T> action)
循环容器中的元素,并对每个元素进行 action 操作,容器中不能有空元素,否则或抛出 NullPointerException 异常。

1.3spliterator()
Spliterator接口是1.8新加的接口,字面意思可分割的迭代器,不同以往的iterator需要顺序迭代,Spliterator可以分割为若干个小的迭代器进行并行操作,既可以实现多线程操作提高效率,又可以避免普通迭代器的fail-fast机制所带来的异常。Spliterator可以配合1.8新加的Stream进行并行流的实现,大大提高处理效率。

2.Collection


Collection是最基本集合接口,接口中为子集合定义了各种基础的方法,方便我们使用。

 

2.1int size();
方法返回一个int类型的值,代表集合中元素的个数,如果集合中的元素个数超过正数的最大值,那么只能返回正数的最大值。

2.2boolean isEmpty();
返回一个boolean类型的值,代表当前集合是否为集合。

2.3boolean contains(Object o)
返回boolean值代表集合中是否含有这个元素,这个方法比较依赖对象中的重写过的equals方法,如果没有重写equals方法,那么代表是否含有该内存位置的对象。参数o如果不是Collection指定的泛型类型,会报ClassCastException异常。参数为null,但是Collection要求不能存在null值的时候报NullPointerException异常。

2.4Object[] toArray()、 T[] toArray(T[] a)
两个方法都是将集合中的元素以数组的形式返回,如果集合规定了一个迭代器,那么集合返回的数组会按照迭代器规定的顺序排列后返回。第二个方法会返回一个指定类型的结合,这里的参数T[] a的作用只是提供一个泛型的类型以及一个数组的长度,如果集合的长度大于传入参数a数组的长度,返回的数组长度与集合长度相同,如果集合长度小于传入参数a数组的长度,返回的数组长度与参数a数组的长度相同,但是比集合元素多出来的所有位置的都为null。

如果指定数组a的运行时类型跟数组内元素的类型不同时,会报java.lang.ArrayStoreException如果数组a为null,报NullPointerException

2.5boolean add(E e)
向集合中添加元素

2.6boolean addAll(Collection<? extends E> c)
向集合中添加参数集合的所有元素

异常:

如果集合不支持添加操作,报UnsupportedOperationException
如果e的类型被集合指定不允许添加,报ClassCastException
如果元素的某些属性导致元素不能被添加到集合中,报IllegalArgumentException
如果元素不能在这个时候被添加到集合中,报IllegalStateException
如果元素为null,但是集合中不允许出现null元素,报NullPointerException.
2.7boolean remove(Object o)
移除集合中的指定元素

2.8boolean removeAll(Collection<?> c)
移除原集合中所有在参数集合中出现过的元素

异常:

指定的元素o的运行时类型与集合指定的泛型不匹配时,报ClassCastException

指定对象中包含一到多个null元素,但是集合中不允许出现null时,报NullPointerException

如果该集合不支持移除操作,报UnsupportedOperationException

2.9clear()
清楚集合内的所有元素,异常:如果clear操作不被集合支持,抛出UnsupportedOperationException异常

3.List


通过List源码注释大体可以知道List集合接口继承至Collection接口,有序集合、允许重复、允许空值。

 

除了继承Collection的方法为,下面是List比Collection多的方法

3.1replaceAll
1.8中出现的新方法,接收lambda表达式生成的一个UnaryOperator对象,对list中的每个对象进行替换操作

3.2sort
1.8中新增的方法,让list的调用自己的方法就能实现排序,不必再实现comparable接口或者使用Collections类的排序方法进行排序,其实底层调用了Arrays方法对list进行排序,方法同样支持lambda的函数式编程,

3.3boolean addAll(int index, Collection<? extends E> c)
将指定的集合插入到该序列中的指定的index位置

3.4E get(int index)
获取序列中指定位置的元素

3.5E set(int index, E element)
用指定的元素替换序列中指定位置的元素

3.6void add(int index, E element)
在序列指定位置中添加元素

3.7E remove(int index)
移除序列中指定位置的元素

3.8int indexOf(Object o)
获取指定元素第一次在序列中出现的位置

3.9int lastIndexOf(Object o)
获取指定元素最后一次在序列中出现的位置

3.10ListIterator listIterator();
返回列表元素的列表迭代器(按适当顺序)

3.11ListIterator listIterator(int index)
返回列表元素的列表迭代器(按适当顺序)

3.12List subList(int fromIndex, int toIndex)
返回该序列中从fromIndex到toIndex中的一个子序列(子列表其实还是这个列表一部分,改变了会改变该序列)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值