# 前言
简洁的代码,看着会让人舒服不少,相信不少同学也体验过看别人代码的痛苦,我们更要注重自身的代码优化,下面几种技术在写代码中使用可以有很多灵活的运用。
# Lambda表达式
不用写匿名内部类可以快速调用匿名方法,比如多线程的启动
```java
Thread t1 = new Thread(()-> System.out.println("线程启动"));
t1.start();
```
接收参数,直接运行方法结果,也能有返回值
```java
(a, b) -> a - b;
(int a, int b) -> { return a * b; };
```
也能快速循环遍历,str就是list集合存的数据
```java
list.forEach((str) -> System.out.println(str));
```
anyMatch循环方法,当返回true时跳出循环
# Stream流
Stream代表来自源对象的序列,对元素集合进行操作,可以对数据进行筛选、排序、匹配、收集等操作,直接看代码
```java
List<String> strList = Arrays.asList("hello", "2020 end", "lis", "2021 Happy", "color");
List<String> list = strList.stream()
.filter(s -> s.startsWith("2"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());
```
下图看实际效果:
对集合进行了过滤、转大写、排序操作
# 反射函数名称执行函数
因为公司代码有机器审核,单个方法代码行数,if、else if、switch case、for个数都有限制,所以根据以往经验,想出传函数名称执行函数
应用场景1:以前公司是做游戏,游戏活动条件验证、奖励列表等都是函数列表,比如{{"level",1}}需要验证等级方法大于1;{{"level",VIP0},{"vip",3}}等级方法验证大于10,vip验证大于3级,奖励方法同理{货币,物品,任务,特殊}
应用场景2:根据数据不用状态执行不同函数
## 应用
自己调试完成后还有些瑕疵,后面发现有现成工具类MethodUtils,就直接封装它的方法了
```java
/**
* @param object 实例化对象
* @param methodName 需要执行的函数名
* @param args 参数列表
* @throws Exception
*/
public static void invoke(Object object, String methodName, Object... args) throws Exception {
MethodUtils.invokeMethod(object, methodName, args);
}
```
效果图:
# Map结合Funcation
map存操作值和函数方法
当触发事件时,调用一次函数
但个人觉得不如反射简洁
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。