对相同的key中的value进行合并
// 假设 ccmdbCarWeizis 是一个包含 CarWeizi 对象的列表 ccmdbCarWeizis.forEach(carWeizi -> { // 提取 CarWeizi 对象的 carInformation 属性的前三个字符作为省份简称 String label = carWeizi.getCarInformation().substring(0, 3); // 检查 groupedMap 是否已经包含这个省份简称作为键 if (!groupedMap.containsKey(label)) { // 如果不包含,将这个简称作为键,并将一个新的空 ArrayList<Dirver> 作为值添加到 groupedMap 中 groupedMap.put(label, new ArrayList<>()); } // 获取 groupedMap 中与省份简称关联的 Dirver 对象列表 List<Dirver> existingList = groupedMap.get(label); // 创建一个新的 Dirver 对象,其 id 为 1,label 为 carWeizi 的 carCodeNumber existingList.add(new Dirver(1, carWeizi.getCarCodeNumber())); }); // 初始化一个用于存储 ToolCode 对象的列表 List<ToolCode> arrayList = new ArrayList<>(); // 遍历 groupedMap 的所有条目 for (Map.Entry<String, List<Dirver>> entry : groupedMap.entrySet()) { // 对于每个条目,创建一个新的 ToolCode 对象 ToolCode code = new ToolCode(); // 设置 ToolCode 对象的 children 属性为当前条目的值(即对应省份的 Dirver 列表) code.setChildren(entry.getValue()); // 设置 ToolCode 对象的 id 属性为 1 code.setId(1); // 设置 ToolCode 对象的 label 属性为当前条目的键(即省份简称) code.setLabel(entry.getKey()); // 将新创建的 ToolCode 对象添加到 arrayList 中 arrayList.add(code); }
/*
for (Map.Entry<String, List<Dirver>> entry : groupedMap.entrySet()){};
这行代码是一个增强型 for 循环(也称为 "for-each" 循环),它遍历 groupedMap 中的每个条目。对每个条目:
Map.Entry<String, List<Dirver>> entry 表示当前遍历到的条目,其中 String 是键的类型,List<Dirver> 是值的类型。在这个上下文中,键很可能是省份的简称,而值是该省份下所有 Dirver 对象的列表。
entry.getKey() 会返回条目的键(例如省份简称)。
entry.getValue() 会返回条目的值(例如 Dirver 对象的列表)。
因此,这行代码的作用是遍历 groupedMap 中的每个条目,并允许你访问每个条目的键和值。在给定的代码片段中,遍历的目的是为了创建 ToolCode 对象,并将它们添加到 arrayList 中。
例如,如果 groupedMap 包含以下条目:
"冀" -> [Dirver1, Dirver2]
"鲁" -> [Dirver3]
循环将执行两次:
第一次迭代,entry 包含 "冀" 作为键和 [Dirver1, Dirver2] 作为值。
第二次迭代,entry 包含 "鲁" 作为键和 [Dirver3] 作为值。
在每次迭代中,你可以使用 entry.getKey() 和 entry.getValue() 来访问这些键和值,如前面的代码示例所示。
*/


浙公网安备 33010602011771号