1.List转Map 在 Java 8 中,使用 Stream API 来处理 List<实体类>,并将实体类中的 rawItemNumber 参数作为键, process 参数作为值。对于相同的 rawItemNumber ,所对应的 process 值通过 “-” 进行拼接。实例如下: // 使用 Stream API 进行处理 Map<String, String> rawItemMap = mesBaseDataList.stream() .collect(Collectors.groupingBy( UBoardKittingData::getRawItemNumber, // 以 rawItemNumber 作为键 Collectors.mapping( UBoardKittingData::getProcess, // 映射为 process Collectors.joining("-") // 使用 "-" 拼接 ) )); 若将上述Map的Value去重在进行拼接需将 Collectors.joining("-") 替换成 Collectors.collectingAndThen( Collectors.toSet(), // 去重 set -> String.join("-", set) // 使用 "-" 拼接 ) 2.List遍历,实体类拼接获取唯一的value **Map<String, List<UBoardKittingData>> groupedData = dataList.stream() .collect(Collectors.groupingBy( item -> String.join("-", item.getPROJECT(), item.getMAIN_GTK_NUMBER(), item.getRAW_ITEM_NUMBER()) ));
3.toMap 的合并函数 // 当key冲突时,保留后出现的值 Map<Integer, Person> map = people.stream() .collect(Collectors.toMap( Person::getId, person -> person, (existing, replacement) -> replacement // 使用新值替换 )); 4.获取最近一周的日期,不包含周天 List<String> nameList = Stream.iterate(LocalDate.now(), date -> date.minusDays(1)) .filter(date -> date.getDayOfWeek() != DayOfWeek.SUNDAY) .limit(7) .map(date -> date.getMonthValue() + "/" + date.getDayOfMonth()) .sorted() .collect(Collectors.toList());