Jdk8 高阶函数的简单使用:map,reduce,filter,sorted

转载地址:https://blog.csdn.net/rongrong_love_lc/article/details/72845528

备份下:

package test;


import java.util.ArrayList;
import java.util.IntSummaryStatistics;
import java.util.stream.Collectors;

import org.junit.Test;

public class LambdaTest {

	static ArrayList<Integer> a = new ArrayList<Integer>();
	static ArrayList<Integer> b = null;
	static {
		a.add(4);
		a.add(3);
		a.add(2);
		a.add(1);
		a.add(6);
		a.add(7);
		a.add(8);
		a.add(5);
		a.add(9);
		a.add(0);
	}

	@Test
	public void testMap_forEach() {
		System.out.println("mmmmmmmmmmmmmmmmmmmmmmmmmmm");
		a.stream().map((x) -> (x + 100)).forEach((num) -> {
			System.out.print(num + ",");
		});
		a.forEach(System.out::print);
		System.out.println();
	}

	@Test
	public void testMap_collect() {
		System.out.println("mmmmmmmmmmmmmmmmmmmmmmmmmmm1111");
		b = (ArrayList<Integer>) a.stream().map((x) -> (x + 100)).collect(Collectors.toList());
		a.forEach(System.out::print);
		System.out.println();
		b.forEach(System.out::print);
	}

	@Test
	public void testReduce() {
		System.out.println("rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr");
		int b = a.stream().reduce((x, y) -> x + y).get();
		a.stream().forEach(System.out::print);
		System.out.println();
		System.out.println("sum = " + b);
	}

	@Test
	public void testFilter() {
		System.out.println("ffffffffffffffffffffffff");
		b = (ArrayList<Integer>) a.stream().filter((y) -> y % 2 != 0).collect(Collectors.toList());
		
		b.forEach((x) -> System.out.print(x + ","));
		System.out.println();
	}

	@Test
	public void testSort() {
		System.out.println("ssssssssssssssssssssssssssss");
		b = (ArrayList<Integer>) a.stream().sorted().collect(Collectors.toList());
		b.forEach((x) -> System.out.print(x + ","));
		System.out.println();
	}

	@Test
	public void testSort1() {
		System.out.println("ssssssssssssssssssssssssssss11111111");
		b = (ArrayList<Integer>) a.stream().sorted((x, y) -> {
			if (x > y) {
				return -1;
			} else if (x == y) {
				return 0;
			} else {
				return 1;
			}
		}).collect(Collectors.toList());
		b.forEach((x) -> System.out.print(x + ","));
		System.out.println();
	}

	@Test
	public void testSort2() {
		System.out.println("ssssssssssssssssssssssssssss2222222222222222");
		b = (ArrayList<Integer>) a.stream().sorted((x, y) -> (x.compareTo(y))).collect(Collectors.toList());
		b.forEach((x) -> System.out.print(x + ","));
		System.out.println();
	}

	@Test
	public void testSort3() {
		System.out.println("ssssssssssssssssssssssssssss3333333333333333333");
		b = (ArrayList<Integer>) a.stream().sorted((x, y) -> (-x.compareTo(y))).collect(Collectors.toList());
		b.forEach((x) -> System.out.print(x + ","));
		System.out.println();
	}

	@Test
	public void testSummaryStatistics() {
		System.out.println("================SummaryStatistics====================");
		IntSummaryStatistics statistics = a.stream().mapToInt((x) -> x).summaryStatistics();
		System.out.println("最大值:" + statistics.getMax());
		System.out.println("最小值:" + statistics.getMin());
		System.out.println("平均值:" + statistics.getAverage());
		System.out.println("总数:" + statistics.getCount());
		System.out.println("和:" + statistics.getSum());
	}

	@Test
	public void testParallelStream() {
		System.out.println("*******************ParallelStream**********************");
		// 以下使用有错误
		// IntStream intStream = a.parallelStream().mapToInt((x)->x);
		// System.out.println("最大值:"+intStream.max());
		// System.out.println("最小值:"+intStream.min());
		// System.out.println("平均值:"+intStream.average());
		// System.out.println("总数:"+intStream.count());
		// System.out.println("和:"+intStream.sum());
		System.out.println("最大值:" + a.parallelStream().mapToInt((x) -> x).max());
		System.out.println("最小值:" + a.parallelStream().mapToInt((x) -> x).min());
		System.out.println("平均值:" + a.parallelStream().mapToInt((x) -> x).average());
		System.out.println("总数:" + a.parallelStream().mapToInt((x) -> x).count());
		System.out.println("和:" + a.parallelStream().mapToInt((x) -> x).sum());
	}

}

 

猜你喜欢

转载自blog.csdn.net/rainyspring4540/article/details/84030819