java8 stream API

java8 Arrays 的使用
Stream<String> stream = Stream.of("a","b","c");
List<String> upperList = stream.parallel()
    .map(String::toUpperCase)
    .collect(Collectors.toList());

List<Integer> list = Arrays.asList(1,2,3,4,5);
List<Integer> res = list.parallelStream()
    .filter(value -> value > 2)
    .collect(Collectors.toList());

并行处理数组

Java 8 还为数组提供了并行处理的方法,这些方法加在 Arrays 工具类上。方法列表如下:
Arrays.parallelPrefix:任意给定一个函数,计算数组的和;
Arrays.parallelSetAll:使用 Lambda 表达式更新数组元素;
Arrays.parallelSort:数组排序。

下面演示一下如何使用这些方法。在下面的代码中,先用 parallelSetAll 方法初始化数组,填充随机数;然后调用 parallelSort 方法并行排序;最后调用 parallelPrefix 方法,使用 Integer::sum 方法引用,计算出数组的和。

链接:https://www.jianshu.com/p/44e7c05ba8ae
int[] array = new int[10];
//初始化
Arrays.parallelSetAll(array, i -> new Random().nextInt(100));
System.out.println(Arrays.toString(array));
//排序
Arrays.parallelSort(array);
System.out.println(Arrays.toString(array));
//累加
Arrays.parallelPrefix(array, Integer::sum);
System.out.println(Arrays.toString(array));

strem api  最常用:

1.集合的遍历:

1.1 forEach and list

java7

List<String> items = new ArrayList<>();
items.add("A");
items.add("B");
items.add("C");for(String item : items){
    System.out.println(item);
}

java8:

List<String> items = new ArrayList<>();
items.add("A");
items.add("B");
items.add("C");//lambda
//Output : A,B,C,D,E
items.parallelStream().forEach(item->System.out.println(item));

//Output : C
items.forEach(item->{
    if("C".equals(item)){
        System.out.println(item);
    }
});

//method reference
//Output : A,B,C,D,E
items.forEach(System.out::println);

//Stream and filter
//Output : B
items.stream()
    .filter(s->s.contains("B"))
    .forEach(System.out::println);

1.2. forEach for Map

java7

Map<String, Integer> items = new HashMap<>();
items.put("A", 10);
items.put("B", 20);
items.put("C", 30);

for (Map.Entry<String, Integer> entry : items.entrySet()) {
    System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue());
}

java8:

Map<String, Integer> items = new HashMap<>();
items.put("A", 10);
items.put("B", 20);
items.put("C", 30);

items.parallelStream().forEach((k,v)->System.out.println("Item : " + k + " Count : " + v));

items.forEach((k,v)->{
System.out.println("Item : " + k + " Count : " + v);
if("E".equals(k)){
System.out.println("Hello E");
}
});

2.数据的过滤 请参考:java8 stream API ListUtils 对 list 数据 分组 ,统计,求和 。。。--https://www.cnblogs.com/lshan/p/10861629.html

原文地址:https://www.cnblogs.com/lshan/p/10951373.html