一. lambda表达式写法及注意事项
lambda表达式:(参数部分) -> {执行的代码块}
1.只有针对单方法的接口才能使用lambda表达式进行简化(接口里只有一个方法)
new thread(()->{
}).start();
2.当花括号里只有一条语句时,花括号可以省略
3.lambda表达式可以进行参数的类型判断(参数部分只保留参数名,类型名可以省略)
4.代码体里面只有一条语句时,花括号省略时,这一条语句不能加;号。
5.如果代码体部分只有一条语句,这条语句还可以充当返回值,省略return。
二.常见应用
1.线程Runnable中
ExecutorService executorService = Executors.newFixedThreadPool(10);
// executorService.submit(new Runnable() {
// @Override
// public void run() {
// try {
// handle(socket);
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// });
executorService.submit(()->{
try {
handle(socket);
} catch (IOException e) {
e.printStackTrace();
}
});
2.集合比较器中
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(4);
list.add(3);
list.add(2);
//实现由小到大排序
//Collections.sort(list);
//加一个比较器实现由大到小排序
// Collections.sort(list, new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// return -(o1-o2);
// }
// });
//简化后
Collections.sort(list,(o1,o2)-> o2-o1);
System.out.println(list);
}
3.遍历Map集合
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("a","李四");
map.put("b","张三");
map.put("c","王五");
//通过Map.entrySet使用iterator遍历key和value
//map集合遍历
// Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
// while(iterator.hasNext()){
// Map.Entry<String, String> entry = iterator.next();
// System.out.println(entry.getKey()+"=="+entry.getValue());
//
// }
//通过forEach来遍历
// map.forEach(new BiConsumer<String, String>() {
// @Override
// public void accept(String key, String value) {
// System.out.println("key:"+key+"=="+"value:"+value);
// }
// });
//简化版
map.forEach((key,value)->{System.out.println("key:"+key+"=="+"value:"+value);});
}
}