Lambda 表达式
用lambda表达式实现Runnable
// Java 8之前: new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8, too much code for too little to do"); } }).start(); //Java 8方式: new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();
使用lambda表达式对列表进行迭代
// Java 8之前: List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API"); for (String feature : features) { System.out.println(feature); } // Java 8之后: List features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API"); features.forEach(n -> System.out.println(n)); // 使用Java 8的方法引用更方便,方法引用由::双冒号操作符标示, // 看起来像C++的作用域解析运算符 features.forEach(System.out::println); 通过过滤创建一个String列表 List<String> filtered = strList.stream().filter(x -> x.length()> 2).collect(Collectors.toList()); // 将字符串换成大写并用逗号链接起来 List<String> G7 = Arrays.asList("USA", "Japan", "France", "Germany", "Italy", "U.K.","Canada"); String G7Countries = G7.stream().map(x -> x.toUpperCase()).collect(Collectors.joining(", ")); System.out.println(G7Countries); // 用所有不同的数字创建一个正方形列表 List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4); List<Integer> distinct = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList()); System.out.printf("Original List : %s, Square Without duplicates : %s %n", numbers, distinct); //获取数字的个数、最小值、最大值、总和以及平均值 List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13, 17, 19, 23, 29); IntSummaryStatistics stats = primes.stream().mapToInt((x) -> x).summaryStatistics(); System.out.println("Highest prime number in List : " + stats.getMax()); System.out.println("Lowest prime number in List : " + stats.getMin()); System.out.println("Sum of all prime numbers : " + stats.getSum()); System.out.println("Average of all prime numbers : " + stats.getAverage());
排序
List<Integer> list= Arrays.asList(1,4,7,6,2,3,5); //jdk1.8之前排序 倒序 Collections.sort(list,new Comparator<Integer>(){ public int compare(Integer o1, Integer o2) { return -o1.compareTo(o2); } }); //使用Lambda表达式排序 倒序 Collections.sort(list,(Integer o1,Integer o2)->{ return -o1.compareTo(o2); }); //可以简写为 顺序 Collections.sort(list,(Integer o1,Integer o2)->o1.compareTo(o2)); 数组排序,用法同上 Int num[]={1,4,5,2,3}; //Lambda表达式排序 Arrays.sort(a);//{1,2,3,4,5}
Map函数
public static void main(String[] args) { List<String> _names = Arrays.asList("Bob", "Tom", "Jeff", "Scott", "Jennifer", "Steve"); List<String> greetings = _names.stream().map(name -> "Hello " + name) .collect(Collectors.toList()); System.out.println(greetings);。//打印整个list集合 greetings.forEach(System.out::println); //遍历输出集合中每个元素 } //运行结果[Hello Bob, Hello Tom, Hello Jeff, Hello Scott, Hello Jennifer, Hello Steve]
Stream流
List<Integer> nums = Lists.newArrayList(1,1,null,2,3,4,null,5,6,7,8,9,10); System.out.println("求和:"+nums .stream()//转成Stream .filter(team -> team!=null)//过滤 .distinct()//去重 .mapToInt(num->num*2)//map操作 .skip(2)//跳过前2个元素 .limit(4)//限制取前4个元素 .peek(System.out::println)//流式处理对象函数 .sum());//

浙公网安备 33010602011771号