java8的正确使用姿势
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | ackage com.expgiga.Java8; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; /** * Java8内置的四大核心函数式接口 * * 1.Consumer<T>:消费型接口 * void accept(T t); * 2.Supplier<T>:供给型接口 * T get(); * 3.Function<T, R>:函数型接口 * R apply(T t); * 4.Predicate<T>:断言型接口 * boolean test(T t); */ public class TestLambda3 { public static void main(String[] args) { //Consumer<T>消费型接口 happy( 10000 , (m) -> System.out.println( "Play Game!: " + m + " yuan" )); //Supplier<T> List<Integer> numList = getNumList( 10 , () -> ( int ) (Math.random() * 100 )); for (Integer num : numList) { System.out.println(num); } //Function<T, R>函数型接口 String newStr = strHandler( "\t\t\t 你牛逼 " , (str) -> str.trim()); System.out.println(newStr); String subStr = strHandler( "我也牛逼,大家都牛逼" , (str) -> str.substring( 2 , 5 )); System.out.println(subStr); //Predicate<T> 断言型接口 List<String> list = Arrays.asList( "Hello" , "you" , "me" , "Java" , "Scala" ); List<String> newlist = filterStr(list, (s) -> s.length() > 3 ); for (String str : newlist) { System.out.println(str); } } private static void happy( double money, Consumer<Double> con) { con.accept(money); } //需求:产生一些整数,并放入集合中 private static List<Integer> getNumList( int num, Supplier<Integer> sup) { List<Integer> list = new ArrayList<>(); for ( int i = 0 ; i < num; i++) { Integer n = sup.get(); list.add(n); } return list; } //需求:用于处理字符串 private static String strHandler(String str, Function<String, String> fun) { return fun.apply(str); } //需求:将满足条件的字符串放入集合中去 private static List<String> filterStr(List<String> list, Predicate<String> predicate) { List<String> strList = new ArrayList<>(); for (String str : list) { if (predicate.test(str)) { strList.add(str); } } return strList; } } |
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· Tinyfox 发生重大改版
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· 小米CR6606,CR6608,CR6609 启用SSH和刷入OpenWRT 23.05.5
· 近期最值得关注的AI技术报告与Agent综述!