public boolean updateWight(List<String> list) { ArrayList<Tag> objects = Lists.newArrayList(); for (int i = 0; i < list.size(); i++) { Tag tag = new Tag(); tag.setId(list.get(i)); tag.setWeight(i); objects.add(tag); } return this.updateBatchById(objects); }
时间: 2023-05-23 08:01:29 浏览: 84
这是一段 Java 代码,它定义了一个 public boolean 类型的方法名叫 updateWeight,方法参数是一个 List<String> 类型的列表。在方法内部,它创建了一个 ArrayList<Tag> 类型的对象实例,然后对列表中的每个元素进行循环处理,在循环体内部,针对每个元素创建了一个 Tag 对象,并设置了它的 id 和 weight 属性值,然后将该 Tag 对象添加到 ArrayList 中。最后,在方法结束前,它调用了 this.updateBatchById 方法来更新指定 ID 的对象。
相关问题
代码如下,模板类字段是动态的,怎么改造代码: setResponseHeader("项目工单统计-工单统计工单位置", response); //表头 List<List<String>> header = new ArrayList<>(); header.add(Lists.newArrayList("位置", "一级位置")); header.add(Lists.newArrayList("位置", "二级位置")); header.add(Lists.newArrayList("位置", "三级位置")); header.add(Lists.newArrayList("工单总数", "工单总数")); header.add(Lists.newArrayList("进行中工单数", "进行中工单数")); header.add(Lists.newArrayList("已挂起工单数", "已挂起工单数")); header.add(Lists.newArrayList("挂单率", "挂单率")); header.add(Lists.newArrayList("已完成工单数", "已完成工单数")); header.add(Lists.newArrayList("完成率", "完成率")); //组装导出dto List<OrderLocationAnalysisDTO> list = this.getOrderLocationAnalysisDTOList(query); List<Integer> workOrderTypeList = new ArrayList<>(); //公区报单 workOrderTypeList.add(11); WriteTable head = EasyExcel.writerTable(0).needHead(Boolean.TRUE).build(); ExcelWriter writer = EasyExcel.write(response.getOutputStream()).build(); WriteTable data = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(header).build(); WriteSheet sheet = EasyExcel.writerSheet(0).needHead(Boolean.FALSE).sheetName("工单统计工单位置导出").build(); writer.write(concatHead("工单统计工单位置导出",query.getTimeRange().getStartTime(),workOrderTypeList), sheet, head); writer.write(list,sheet,data); writer.finish();
可以将模板类字段作为参数传入方法中,然后根据参数动态生成表头。修改后的代码如下:
```
public void exportOrderLocationAnalysis(HttpServletResponse response, String sheetName, List<String> templateFields, OrderLocationAnalysisQuery query) throws IOException {
//生成表头
List<List<String>> header = new ArrayList<>();
for (String field : templateFields) {
String[] fieldArr = field.split("-");
header.add(Lists.newArrayList(fieldArr[0], fieldArr[1]));
}
//组装导出dto
List<OrderLocationAnalysisDTO> list = this.getOrderLocationAnalysisDTOList(query);
List<Integer> workOrderTypeList = new ArrayList<>();
//公区报单
workOrderTypeList.add(11);
WriteTable head = EasyExcel.writerTable(0).needHead(Boolean.TRUE).build();
ExcelWriter writer = EasyExcel.write(response.getOutputStream()).build();
WriteTable data = EasyExcel.writerTable(1).needHead(Boolean.TRUE).head(header).build();
WriteSheet sheet = EasyExcel.writerSheet(0).needHead(Boolean.FALSE).sheetName(sheetName).build();
writer.write(concatHead(sheetName, query.getTimeRange().getStartTime(), workOrderTypeList), sheet, head);
writer.write(list, sheet, data);
writer.finish();
}
```
调用该方法时,传入模板类字段的列表即可:
```
List<String> templateFields = Arrays.asList("位置-一级位置", "位置-二级位置", "位置-三级位置", "工单总数-工单总数", "进行中工单数-进行中工单数", "已挂起工单数-已挂起工单数", "挂单率-挂单率", "已完成工单数-已完成工单数", "完成率-完成率");
exportOrderLocationAnalysis(response, "工单统计工单位置导出", templateFields, query);
```
java如何方便的比较两个List<Long>是否相等,
在Java中,要方便地比较两个`List<Long>`是否相等,可以使用以下两种方法:
1. 使用`java.util.Collections`类的`equals`方法:
`Collections`类的`equals`方法可以用来比较两个列表是否相等。这个方法会检查两个列表的大小,然后逐个元素比较,如果所有元素都相等且顺序也相同,那么这两个列表就被认为是相等的。使用起来非常简单,只需要一行代码。
示例代码如下:
```java
List<Long> list1 = Arrays.asList(1L, 2L, 3L);
List<Long> list2 = Arrays.asList(1L, 2L, 3L);
boolean isEqual = Collections.equals(list1, list2); // 返回 true
```
2. 使用Google Guava库的`ListUtils`类:
如果你使用了Google Guava库,可以利用`ListUtils`类中的`isEqual`方法来比较两个列表。这个方法提供了类似于`Collections.equals`的行为,但是它是Guava库提供的,需要先添加Guava依赖。
示例代码如下:
```java
List<Long> list1 = Lists.newArrayList(1L, 2L, 3L);
List<Long> list2 = Lists.newArrayList(1L, 2L, 3L);
boolean isEqual = ListUtils.isEqualList(list1, list2); // 返回 true
```
在这两种方法中,如果你没有使用额外的库,那么第一种方法是更方便的选择。如果项目中已经包含了Guava库,那么第二种方法也是一个很好的选择。
阅读全文