Excel导入校验表格内是否有多条相同的数据



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()` 方法,能够更加便捷地处理和操作数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值