if(!StringUtil.isEmpty(borrowStatus)){ params.put("borrowStatus",borrowStatus); } if(!StringUtil.isEmpty(returnStatus)){ params.put("returnStatus",returnStatus); }如何优化这段代码
时间: 2024-01-10 22:02:38 浏览: 117
可以使用三目运算符将重复的代码合并,可以看起来更简洁:
```
params.put("borrowStatus", StringUtil.isEmpty(borrowStatus) ? null : borrowStatus);
params.put("returnStatus", StringUtil.isEmpty(returnStatus) ? null : returnStatus);
```
这样,当 `borrowStatus` 或 `returnStatus` 为空时,对应的参数值将会设为 `null`,否则就将非空的参数值直接放入 `params` 中。这样可以使代码更加简洁,避免了重复的判断和赋值操作。
相关问题
if(!CollectionUtils.isEmpty(assessList)){ List<Assess> dataList = new ArrayList<>(); for(Assess assess : assessList){ String directRater = assess.getDirectRater(); String deptRater = assess.getDeptRater(); if(!StringUtil.isEmpty(directRater)){ raters.add(directRater); } if(!StringUtil.isEmpty(deptRater)){ raters.add(deptRater); } //更新初始状态:提交 assess.setState(SUBMIT_ASSESS_STATE); dataList.add(assess); } saveOrUpdateBatch(dataList); }如何优化这段代码
这段代码的优化可以从以下几个方面考虑:
1. 可以使用Stream API代替for循环,使代码更简洁。例如:
```java
if (!CollectionUtils.isEmpty(assessList)) {
List<Assess> dataList = assessList.stream()
.peek(assess -> {
String directRater = assess.getDirectRater();
String deptRater = assess.getDeptRater();
if (!StringUtil.isEmpty(directRater)) {
raters.add(directRater);
}
if (!StringUtil.isEmpty(deptRater)) {
raters.add(deptRater);
}
assess.setState(SUBMIT_ASSESS_STATE);
})
.collect(Collectors.toList());
saveOrUpdateBatch(dataList);
}
```
2. 可以使用lambda表达式简化处理直接评估人和部门评估人的逻辑。例如:
```java
if (!CollectionUtils.isEmpty(assessList)) {
List<Assess> dataList = assessList.stream()
.peek(assess -> {
Stream.of(assess.getDirectRater(), assess.getDeptRater())
.filter(StringUtils::isNotEmpty)
.forEach(raters::add);
assess.setState(SUBMIT_ASSESS_STATE);
})
.collect(Collectors.toList());
saveOrUpdateBatch(dataList);
}
```
3. 如果raters集合不需要保留,可以使用flatMap方法将直接评估人和部门评估人合并成一个Stream,然后直接统计评估人数。例如:
```java
long count = assessList.stream()
.flatMap(assess -> Stream.of(assess.getDirectRater(), assess.getDeptRater()))
.filter(StringUtils::isNotEmpty)
.distinct()
.count();
```
以上是一些可以优化这段代码的方法,具体的实现方式取决于代码的实际需求和环境。
分析public static ResultSet list(Connection conn, Book book) throws SQLException { StringBuffer sb = new StringBuffer("select * from book b,table_booktype bt where b.bookTypeId=bt.id"); if (!StringUtil.isEmpty(book.getBookname())) { sb.append(" and b.bookName like '%" + book.getBookname() + "%'"); } if (!StringUtil.isEmpty(book.getAuthor())) { sb.append(" and b.author like '%" + book.getAuthor() + "%'"); } if (book.getBooktypeid() != null && book.getBooktypeid() != -1) { sb.append(" and b.bookTypeId=" + book.getBooktypeid()); } PreparedStatement psmt = conn.prepareStatement(sb.toString()); return psmt.executeQuery(); }这段代码的作用
这段代码的作用是从数据库中查询图书信息,根据传入的Book对象的属性进行筛选。具体实现是通过拼接SQL查询语句,然后使用PreparedStatement对象执行查询并返回结果集ResultSet。其中,如果Book对象的书名、作者、图书类型ID属性不为空,则会将对应的查询条件拼接到SQL语句中,使用like进行模糊查询。如果图书类型ID为-1,则不会将该条件拼接到SQL中。
阅读全文