PageHelper和map的merge的骚操作

PageHelper在SpringBoot+MyBatis中合理且规范的使用方法

public PageInfo page(RequestParamDto param) {
return PageHelper.startPage(param.getPageNum(), param.getPageSize())
.doSelectPageInfo(() -> list(param))
}
public List list(RequestParamDto param) {
return mapper.selectManySelective(param);
}

    ObjectMapper objectMapper = new ObjectMapper();
    List<StudentScore> studentScoreList = buildATestList();

    Map<String, Integer> studentScoreMap = new HashMap<>();
    studentScoreList.forEach(studentScore -> {
        if (studentScoreMap.containsKey(studentScore.getStuName())) {
            studentScoreMap.put(studentScore.getStuName(), 
                                studentScoreMap.get(studentScore.getStuName()) + studentScore.getScore());
        } else {
            studentScoreMap.put(studentScore.getStuName(), studentScore.getScore());
        }
    });

    System.out.println(objectMapper.writeValueAsString(studentScoreMap));

// 结果如下:
// {“李四”:228,“张三”:215,“王五”:235}
Map<String, Integer> studentScoreMap2 = new HashMap<>();
studentScoreList.forEach(studentScore -> studentScoreMap2.merge(
studentScore.getStuName(),
studentScore.getScore(),
Integer::sum));

    System.out.println(objectMapper.writeValueAsString(studentScoreMap2));

stream collector分组求和不香吗

public static void main(String[] args) {
// 准备数据
List userList = new ArrayList();
for (int i = 0; i < 100; i++) {
User user = new User(i,new BigDecimal(i+"."+i));
userList.add(user);
}
// for version
BigDecimal result1 = BigDecimal.ZERO;
for (User user : userList) {
result1 = result1.add(user.getMoney());
}
System.out.println("result1 = "+result1);
// java 8 stream version
BigDecimal result2 = userList.stream()
// 将user对象的mongey取出来map为Bigdecimal
.map(User::getMoney)
// 使用reduce聚合函数,实现累加器
.reduce(BigDecimal.ZERO,BigDecimal::add);
System.out.println("result2 = "+result2);
}

public class Demo2 {
public static void main(String[] args) {
List studentList = StudentUtil2.createStudentList();
// 通过姓名分组,姓名为key,相同姓名的学生为列表
Map<String, List> collect = studentList.stream().collect(Collectors.groupingBy(Student::getName, Collectors.toList()));
// collect的数据为
System.out.println(“collect的数据为:”);
collect.forEach((key,list)-> {
System.out.println(“key:”+key);
list.forEach(System.out::println);
});
// 分组后的年龄和为
System.out.println(“分组后的年龄和为:”);
collect.forEach((key,list)-> System.out.println(“key:”+key+",年龄和"+list.stream().mapToInt(Student::getAge).sum()));

}

## if else 太多?看我用 Java 8 轻松干掉

List list = new ArrayList<>(Arrays.asList(info, info1, info2, info3, info4, “Java技术栈(默认)”));
list.removeIf(StringUtils::isBlank);
String result = list.get(0);

String result = new ArrayList(Arrays.asList(info, info1, info2, info3, info4, “Java技术栈(默认)”)).stream().filter(StringUtils::isNotBlank).collect(Collectors.toList()).get(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值