https://blog.csdn.net/chenshun123/article/details/78122467
package 第一天; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Formatter; import java.util.IntSummaryStatistics; import java.util.List; import java.util.Locale; import java.util.function.Predicate; import java.util.stream.Collector; import java.util.stream.Collectors; import javax.swing.JButton; /** * java8 的lambda 表达式的运用 10種用法 * * @author js * @see https://www.jdon.com/idea/java/10-example-of-lambda-expressions-in-java8.html * */ public class Lambda { public static void main(String[] args) { // 使用()->{} 代替匿名类 /* * new Thread(new Runnable() { * * @Override public void run() { System.out.println("before java8"); } * }).start(); * * new Thread(()-> {System.out.println("in java8");}).start(); */ // 实现事件处理 /* * JButton jbutton=new JButton("button"); jbutton.addActionListener(new * ActionListener() { * * @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated * method stub System.out.println("without lambda expression is boring"); } } ); * * jbutton.addActionListener((e)->{ * System.out.println("Action !! Lambda expressions Rocks"); }); */ // 利用Lambda 表达式来遍历list 集合 /* * List list=Arrays.asList("1","2","3","4"); for (Object object : list) { * System.err.print(object); } * * list.forEach(n->{System.out.print(n);}); * * list.forEach(System.err::print); */ // 使用Lambda 表达式和函数接口 /*List list2 = Arrays.asList("am", "bs", "cd", "dsm"); filter(list2, (str) -> ((String) str).startsWith("a")); filter(list2, (str) -> ((String) str).endsWith("s")); filter(list2, (str) -> true); filter(list2, (str) -> false); filter(list2, (str) -> ((String) str).length() > 2);*/ // 复杂的结合Preicate 使用 /* Predicate<String> startWithJ = (n) -> n.startsWith("c"); Predicate<String> fourLetterLong = (n) -> n.length() ==2 ; list2.stream().filter(startWithJ.and(fourLetterLong)).forEach((n) -> { System.err.println("开头为j 长度为4 的为:" + n); }); */ //使用Lambda实现Map 和Reduce /*List<Integer> list3=Arrays.asList(100,200,300,400,500); double total = 0; for (Integer c : list3) { double p=c+.12*c; System.err.println(p); } list3.stream().map((c)->c+.12*c) .forEach(System.out::println); */ //reduce() 是将集合中所有值结合进一个,Reduce类似SQL语句中的sum(), avg() 或count(), /* for (Integer c : list3) { double p=c+.12*c; total=total+p; } System.err.println("total:"+total); double m=list3.stream().map((c)->c+.12*c) .reduce((sum,c)->sum+c).get(); System.err.println("total:"+m);*/ //通過filtering 創建一個字符串String集合 /*List<String> strList = Arrays.asList("hhhh", "xxxx", "bbbb", "lll"); List<String> filtered = strList.stream().filter(x -> x.length()> 3) .collect(Collectors.toList()); System.out.printf("Original List : %s, filtered list : %s %n", strList, filtered);//第一個字符串為替換規則 */ //對集合每一個元素應用函數 /*List<String> list6=Arrays.asList("1q1","2w2","3e3"); String json=list6.stream().map(x->x.toUpperCase()).collect(Collectors.joining(",")); System.err.println(json);*/ //通過複製不同的值創建一個子列表 List<Integer> list7=Arrays.asList(1,4,3,2,5); List<Integer> distinct =list7.stream().map(i->i*i) .distinct().collect(Collectors.toList()); /*System.out.printf("Original List : %s, Square Without duplicates : %s %n", list7, distinct);*/ Formatter formatter=new Formatter(); Formatter f=formatter.format(Locale.getDefault(),"%s, Square Without duplicates : %s %n", list7,distinct); System.err.println(f.toString()); //计算List中的元素的最大值,最小值,总和及平均值 /*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()); */ } public static void filter(List names, Predicate condition) { names.stream().filter((name) -> (condition.test(name))).forEach((name) -> { System.err.println(name + ""); }); } }
浙公网安备 33010602011771号