This commit is contained in:
Looly
2022-03-25 00:53:51 +08:00
parent e5bc9d5484
commit e76d2e13cb
5 changed files with 55 additions and 31 deletions

View File

@@ -1,10 +1,9 @@
package cn.hutool.core.lang.func;
import lombok.Data;
import org.junit.Assert;
import org.junit.Test;
import lombok.Data;
public class LambdaUtilTest {
@Test
@@ -21,19 +20,29 @@ public class LambdaUtilTest {
@Test
public void getImplClassTest() {
// 一般用于封装工具类时减少参数使用
Class<MyTeacher> aClass = LambdaUtil.getInstantiatedClass(MyTeacher::getAge);
// 类方法引用相当于获取的方法引用是MyTeacher.getAge(this)
// 因此此处会匹配到Func1其参数就是this
Class<MyTeacher> aClass = LambdaUtil.getImplClass(MyTeacher::getAge);
Assert.assertEquals(MyTeacher.class, aClass);
// 一般用于封装工具类时减少参数使用
MyTeacher myTeacher = new MyTeacher();
Class<MyTeacher> bClass = LambdaUtil.getImplClass(myTeacher::getAge);
Assert.assertEquals(MyTeacher.class, bClass);
// 对象方法引用因为已经有了对象因此此处引用相当于获取myTeacher.getAge()
aClass = LambdaUtil.getImplClass(myTeacher::getAge);
Assert.assertEquals(MyTeacher.class, aClass);
// 静态方法引用相当于获取MyTeader.takeAge
aClass = LambdaUtil.getImplClass(MyTeacher::takeAge);
Assert.assertEquals(MyTeacher.class, aClass);
}
@Data
static class MyTeacher {
public static String takeAge(){
return new MyTeacher().getAge();
}
public String age;
}
}

View File

@@ -56,7 +56,7 @@ public class MapUtilTest {
}
@Test
public void changeTest() {
public void mapTest() {
// Add test like a foreigner
Map<Integer, String> adjectivesMap = MapUtil.<Integer, String>builder()
.put(0, "lovely")
@@ -64,7 +64,7 @@ public class MapUtilTest {
.put(2, "happily")
.build();
Map<Integer, String> resultMap = MapUtil.change(adjectivesMap, (k, v) -> v + " " + PeopleEnum.values()[k].name().toLowerCase());
Map<Integer, String> resultMap = MapUtil.map(adjectivesMap, (k, v) -> v + " " + PeopleEnum.values()[k].name().toLowerCase());
Assert.assertEquals("lovely girl", resultMap.get(0));
Assert.assertEquals("friendly boy", resultMap.get(1));
@@ -80,7 +80,7 @@ public class MapUtilTest {
Map<Long, List<Long>> groupIdUserIdsMap = groups.stream().flatMap(group -> idUserMap.keySet().stream().map(userId -> UserGroup.builder().groupId(group.getId()).userId(userId).build())).collect(Collectors.groupingBy(UserGroup::getUserId, Collectors.mapping(UserGroup::getGroupId, Collectors.toList())));
// 神奇的魔法发生了, 分组id和用户ids组成的map竟然变成了订单编号和用户实体集合组成的map
Map<Long, List<User>> groupIdUserMap = MapUtil.change(groupIdUserIdsMap, (groupId, userIds) -> userIds.stream().map(idUserMap::get).collect(Collectors.toList()));
Map<Long, List<User>> groupIdUserMap = MapUtil.map(groupIdUserIdsMap, (groupId, userIds) -> userIds.stream().map(idUserMap::get).collect(Collectors.toList()));
// 然后你就可以拿着这个map去封装groups使其能够在订单数据带出客户信息啦
groups.forEach(group -> Opt.ofNullable(group.getId()).map(groupIdUserMap::get).ifPresent(group::setUsers));