Java中关于集合框架:
首先简单介绍一下,三个主要接口是:Collection,Iterable,Map,所有的集合实现类都实现自Collection以及Collection子类,而Collection则继承自Iterable接口,HashMap,TreeMap,LinkedHashMap实现了Map。 Java8中关于Iterable做了很小的改动,增加了两个默认方法。 1,forEach方法**
//循环输出
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
//使用,将numbers循环输出
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.forEach(integer -> System.out.println(integer));
2,spliterator方法
//分割,增加并行处理能力
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
顺便介绍一下Iterator中增加的一个默认方法
/**
* Description
* @Author lht
* @Date 2018/12/5 下午7:54
**/
public class MainIterator {
public static void main(String[] args) {
//Iterator中Java8提供的新特性:源码如下:
/**
*
* Performs the given action for each remaining element until all elements
* have been processed or the action throws an exception. Actions are
* performed in the order of iteration, if that order is specified.
* Exceptions thrown by the action are relayed to the caller.
*
* @implSpec
* <p>The default implementation behaves as if:
* <pre>{@code
* while (hasNext())
* action.accept(next());
* }</pre>//相当于迭代循环输出
* @param action The action to be performed for each element
* @throws NullPointerException if the specified action is null
* @since 1.8
*
/**
default void forEachRemaining (Consumer < ? super E > action){
Objects.requireNonNull(action);
while (hasNext())
action.accept(next());
}
*/
//使用方法
List<String> arr=new ArrayList<>();
arr.add("hello");
arr.add(("world"));
//下一篇中forEachRemaining中会有比较实用的使用
arr.iterator().forEachRemaining(str-> System.out.println(str));
}
}