java8学习 -- lambda表达式
2016-07-11 16:10
495 查看
参考文章 http://f.dataguru.cn/thread-656507-1-2.html
字符串排序:
每一个lambda表达式都对应一个类型,通常是接口类型。而"函数式接口"是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。
另外java8接口可以有默认方法,但要加上default,如下:
字符串排序:
public class Test2 { /** * 对字符串排序 */ public void strSortForList(List<String> list){ // 老版本java写法 Collections.sort(list, new Comparator<String>() { @Override public int compare(String a, String b) { return b.compareTo(a); } }); // lambda表达式写法 Collections.sort(list, (String a,String b) -> { return b.compareTo(a); }); // 简化版 Collections.sort(list,(a,b) -> b.compareTo(a)); } public static void main(String[] args) { List<String> names = Arrays.asList("peter", "anna", "mike", "xenia"); new Test2().strSortForList(names); System.out.println(names); // 输出结果:[xenia, peter, mike, anna] } }
每一个lambda表达式都对应一个类型,通常是接口类型。而"函数式接口"是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。
/** * 每一个lambda表达式都对应一个类型,通常是接口类型。 * 而"函数式接口"是指仅仅只包含一个抽象方法的接口, * 每一个该类型的lambda表达式都会被匹配到这个抽象方法。 */ @FunctionalInterface interface Converter<F, T> { // 每个该类型的lambda表达式都会被匹配到这个方法 T convert(F from); // 函数式接口(@FunctionalInterface)只包含一个抽象方法(不包括Object的方法) public abstract boolean equals(Object obj); } public class Test3 { public static void main(String[] args) { Converter<String, Integer> converter = (from) -> Integer.valueOf(from); // 上一行代码还可以通过静态方法引用来表示: Converter<String, Integer> converter = Integer::valueOf; Integer converted = converter.convert("123"); System.out.println(converted); // 123 } }
另外java8接口可以有默认方法,但要加上default,如下:
@FunctionalInterface interface Converter<F, T> { T convert(F from); public abstract boolean equals(Object obj); // 另外java8接口可以有默认方法,但要加上default public default String trim(String str){return str.trim();} public default String trim(){return null;} } public class Test3 { public static void main(String[] args) { Converter<String, Integer> converter = Integer::valueOf; System.out.println(converter.trim(" abc ")); // abc } }
相关文章推荐
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
- JAVA常用多线程知识大全(一)
- SpringMVC框架
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- java实现记事本之Java记事本源码及实现
- java 获取数据库所有表结构
- Struts-core 包重复
- 用java实现zip压缩
- 用java实现zip压缩
- (Eclipse打包问题)Export aborted because fatal lint errors we
- java基础六:数组
- 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)
- Error creating context 'spring.root': InputStream is null from Resource
- eclipse下git的配置和使用
- rxJava------>看我72变
- java中利用RandomAccessFile读取超大文件
- java基础学习第一天
- Java链表的增删查改的实现与测试
- 《Java编程规范学习笔记》
- 用struts2 的<s:submit>显示的图标为什么会靠上显示,而不是居中显示