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 方法引用,计算出数组的和。
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