public String CheckValidate(DynamicEntity dynamicEntity, List<String> fieldList) {
List<String> valueList = new ArrayList<>();
for (String field : fieldList) {
if (RtUtil.objectIsNotNull(dynamicEntity.get(field))) {
valueList.add(dynamicEntity.getStringFieldValue(field));
} else {
valueList.add("");
}
}
//使用流的方式将 `valueList` 中的元素连接为一个字符串,使用 `_` 作为分隔符,并将结果作为方法的返回值。
return valueList.stream().collect(Collectors.joining("_"));
}
// 循环里调用
var filedValueKeys = CheckValidate(entityRowList.get(i), List.of("new_accountid", "new_productid", "new_product_size", "new_sale_organization", "new_sale_channel", "new_price", "new_start_date", "new_end_date"));
if (!filedSet.add(filedValueKeys)) {
errorMsg.put(i + 1, Collections.singletonList("存在多条相同记录,请确保唯一。"));
continue;
}
1.joining()干什么用?
在 Java 中,`joining()` 是 Stream API 中的一个终端操作方法,用于将流中的元素连接为一个字符串。
`joining()` 方法可以接收一个可选的分隔符参数,用于在每个元素之间添加指定的分隔符。如果不指定分隔符,则默认情况下不添加任何分隔符。
该方法返回一个由流中所有元素按顺序连接而成的字符串。
以下是使用 `joining()` 方法的示例:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class JoiningExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "orange");
String joinedString = fruits.stream()
.collect(Collectors.joining(", "));
System.out.println(joinedString);
}
}
上述示例中,我们创建了一个包含水果的列表,并使用流的方式将水果连接为一个字符串。在 `collect()` 方法中使用 `joining(", ")` 将水果之间添加了逗号和空格作为分隔符。最后打印输出结果为:`apple, banana, orange`。
需要注意的是,`joining()` 方法返回的是一个新的字符串对象,并不修改原始的流或集合。
通过使用 `joining()` 方法,我们可以方便地将流中的元素连接为一个字符串,使得字符串拼接变得更加简洁和易读。
2.collect()是干什么用的
在 Java 中,`collect()` 是 Stream API 中的一个终端操作方法,用于将流中的元素收集到一个集合或其他数据结构中。
`collect()` 方法接受一个实现了 `Collector` 接口的参数,该参数定义了如何将流中的元素进行收集和组装。常见的用法是通过 `Collectors` 工具类提供的静态方法来创建 `Collector` 对象。
使用 `collect()` 方法可以将流中的元素根据指定的规则进行收集、分组、分区等操作,并生成一个新的集合或数据结构。
以下是一些 `collect()` 方法的示例用法:
1. 将流中的元素收集到一个列表:
List<Integer> numbers = List.of(1, 2, 3, 4, 5);
List<Integer> collectedList = numbers.stream()
.collect(Collectors.toList());
2. 将流中的元素收集到一个 Set 集合:
Set<String> names = Set.of("Alice", "Bob", "Charlie");
Set<String> collectedSet = names.stream()
.collect(Collectors.toSet());
3. 将流中的元素收集到一个 Map 集合:
List<Person> persons = ... // 假设有一个 Person 类的对象列表
Map<String, Integer> ageMap = persons.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
4. 将流中的元素进行分组:
List<Person> persons = ... // 假设有一个 Person 类的对象列表
Map<String, List<Person>> groupedMap = persons.stream()
.collect(Collectors.groupingBy(Person::getCountry));
`collect()` 方法提供了强大的功能,可以根据具体的需求将流中的元素进行定制化的收集和组装。通过合理使用 `collect()` 方法,能够更加便捷地处理和操作数据。