java 对List<ScheckTemplatesItemSpecific> itemList和子集List<ScheckTemplatesContentSpecific> contentList多条数据,按1 、1.1 1.2 1.3 、2 2.1 2.2 重新排序
时间: 2024-03-06 16:52:20 浏览: 69
基于Java实现reorder-list(链表重排序)【100012113】
可以使用如下代码对 itemList 和 contentList 进行重新排序:
```java
// 对 itemList 进行排序
Collections.sort(itemList, new Comparator<ScheckTemplatesItemSpecific>() {
@Override
public int compare(ScheckTemplatesItemSpecific o1, ScheckTemplatesItemSpecific o2) {
return o1.getItemNumber().compareTo(o2.getItemNumber());
}
});
// 对 contentList 进行排序
Collections.sort(contentList, new Comparator<ScheckTemplatesContentSpecific>() {
@Override
public int compare(ScheckTemplatesContentSpecific o1, ScheckTemplatesContentSpecific o2) {
return o1.getContentNumber().compareTo(o2.getContentNumber());
}
});
// 对 contentList 进行分组
Map<String, List<ScheckTemplatesContentSpecific>> contentMap = new HashMap<>();
for (ScheckTemplatesContentSpecific content : contentList) {
String[] arr = content.getContentNumber().split("\\.");
String key = arr[0];
List<ScheckTemplatesContentSpecific> list = contentMap.get(key);
if (list == null) {
list = new ArrayList<>();
contentMap.put(key, list);
}
list.add(content);
}
// 合并 itemList 和 contentList
List<Object> resultList = new ArrayList<>();
int i = 0;
for (ScheckTemplatesItemSpecific item : itemList) {
resultList.add(item);
String key = item.getItemNumber();
List<ScheckTemplatesContentSpecific> list = contentMap.get(key);
if (list != null) {
Collections.sort(list, new Comparator<ScheckTemplatesContentSpecific>() {
@Override
public int compare(ScheckTemplatesContentSpecific o1, ScheckTemplatesContentSpecific o2) {
return o1.getContentNumber().compareTo(o2.getContentNumber());
}
});
resultList.addAll(list);
}
}
```
这段代码首先对 itemList 和 contentList 分别按照编号进行排序,然后对 contentList 进行分组,将同一个父级编号的子集放在一起。最后,将 itemList 和对应的子集合并到一起,得到重新排序后的结果。
阅读全文