优化这两段代码 private String buildOrderListNotUploadByType(QueryBuilder<DBOrder> queryBuilder, int progress, StringBuilder builder) { int listSize; int offset = 0; int limit = 50; do { List<DBOrder> orderList = queryBuilder.build().find(offset, limit); listSize = orderList.size(); for (DBOrder order : orderList) { builder.append(buildOrderForCsv(order)); builder.append("\r\n"); } offset += listSize; } while (listSize >= 50); publishProgress(progress); return builder.toString(); } private String buildOrderListNotUpload() { StringBuilder builder = new StringBuilder(); buildOrderListNotUploadByType(ObjectBox.get().boxFor(DBOrder0.class).query().equal(DBOrder0_.status, PosConstants.UPLOAD_NOT), 25, builder); buildOrderListNotUploadByType(ObjectBox.get().boxFor(DBOrder1.class).query().equal(DBOrder1_.status, PosConstants.UPLOAD_NOT), 50, builder); buildOrderListNotUploadByType(ObjectBox.get().boxFor(DBOrder2.class).query().equal(DBOrder2_.status, PosConstants.UPLOAD_NOT), 75, builder); buildOrderListNotUploadByType(ObjectBox.get().boxFor(DBOrder3.class).query().equal(DBOrder3_.status, PosConstants.UPLOAD_NOT), 100, builder); return builder.toString(); }
时间: 2023-11-27 10:54:04 浏览: 30
1. 避免重复查询:可以使用一个 Map 来存储不同类型的订单查询条件,避免重复查询,提高效率。
2. 使用流式 API:可以使用流式 API 来代替循环遍历,简化代码,提高可读性和可维护性。
3. 分批获取数据:可以将每次获取的数据量稍微调大一些,减少网络请求次数,提高效率。
以下是优化后的代码示例:
```
private String buildOrderListNotUploadByType(QueryBuilder<DBOrder> queryBuilder, int progress, StringBuilder builder) {
int offset = 0;
int limit = 100;
List<DBOrder> orderList;
do {
orderList = queryBuilder.build().find(offset, limit);
orderList.stream().map(this::buildOrderForCsv).forEach(builder::append);
offset += limit;
} while (orderList.size() == limit);
publishProgress(progress);
return builder.toString();
}
private String buildOrderListNotUpload() {
StringBuilder builder = new StringBuilder();
Map<Class<? extends DBOrder>, QueryBuilder<DBOrder>> queryMap = new HashMap<>();
queryMap.put(DBOrder0.class, ObjectBox.get().boxFor(DBOrder0.class).query().equal(DBOrder0_.status, PosConstants.UPLOAD_NOT));
queryMap.put(DBOrder1.class, ObjectBox.get().boxFor(DBOrder1.class).query().equal(DBOrder1_.status, PosConstants.UPLOAD_NOT));
queryMap.put(DBOrder2.class, ObjectBox.get().boxFor(DBOrder2.class).query().equal(DBOrder2_.status, PosConstants.UPLOAD_NOT));
queryMap.put(DBOrder3.class, ObjectBox.get().boxFor(DBOrder3.class).query().equal(DBOrder3_.status, PosConstants.UPLOAD_NOT));
queryMap.forEach((clazz, query) -> buildOrderListNotUploadByType(query, clazz.getSimpleName().hashCode(), builder));
return builder.toString();
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)