Java 8 Lambda的详解说明
下文笔者讲述java8中Lambda的详解,如下所示
Lambda表达式的用途
1.Lambda可使代码更紧凑 2.Lambda表达式可传入代码至方法中 3.可实现并行运算,如:传入代码到filter,map,reduce中
FileFilter使用Lambda简写
File dir = new File("/opt/test/"); FileFilter directoryFilter = new FileFilter() { public boolean accept(File file) { return file.isDirectory(); } }; 使用Lambda表达式这段代码可以简化为如下 File dir = new File("/opt/test/"); FileFilter directoryFilter = (File f) -> f.isDirectory(); File[] dirs = dir.listFiles(directoryFilter); 进一步简化 File dir = new File("/opt/test/"); File[] dirs = dir.listFiles((File f) -> f.isDirectory());
Event Handler
Button bt = new Button(); bt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ui.showSomething(); } }); 使用Lambda表达式后 Button bt = new Button(); ActionListener listener = event -> { ui.showSomething(); }; bt.addActionListener(listener); 进一步简化: Button bt = new Button(); bt.addActionListener(event -> { ui.showSomething(); });
集合过滤
List<String> list = getMyStrings();for(String myString: list) { if(myString.contains(possible)) { System.out.println(myString + " contains " + possible); } } 使用Predicate和Filter后得到下面代码: List<String> list = getMyStrings(); Predicate<String> matched = s -> s.equalsIgnoreCase(possible); list.filter(matched); 进一步简化: List<String> list = getMyStrings(); list.filter(s -> s.equalsIgnoreCase(possible));
Lambda使用注意事项: 如果函数包含多条语句时 则必须使用花括号和return语句
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。