java - 如何在java spring中的列表中有效重复元素?

标签 java spring-boot

我想在 java spring boot 中从后端验证 1 个表单。当表单的ListUser重复时,它会发送错误消息并且不会重新加载页面。 我有一个类(class)请求

public class StoreInformationRequest {
private Boolean isReceiveReport;
private List<String> ipAddress;
private List<Integer> listUser;

public StoreInformationRequest(Boolean isReceiveReport, List<String> ipAddress, List<Integer> listUser) {
    this.isReceiveReport = isReceiveReport;
    this.ipAddress = ipAddress;
    this.listUser = listUser;
}

}

和 Controller :

public String updateStore(@PathVariable("storeCode") String storeCode, @Valid StoreInformationRequest storeInformationRequests, RedirectAttributes attributes)

最佳答案

丢弃重复项

如果您只是想丢弃重复项,请使用 Set<T> 而不是 List<T> 。来自 Set<T> 文档:

A collection that contains no duplicate elements.

要丢弃重复项,您可以使用:

List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 4);
Set<Integer> unique = new HashSet<>(numbers);

您还可以使用:

List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 4);
List<Integer> unique = numbers.stream()
        .distinct()
        .collect(Collectors.toList());

查找重复项

如果您有一个列表并想要提取重复项,可以使用以下命令:

List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 4);
List<Integer> duplicates = numbers.stream()
        .filter(n -> Collections.frequency(numbers, n) > 1)
        .distinct()
        .collect(Collectors.toList());

使用 Hibernate validator

如果您使用Hibernate Validator ,一个 Bean Validation 实现,您可以使用 @UniqueElements 验证集合中的每个元素都是唯一的。

要使用它,请确保您的列表带有 @UniqueElements 注释。 :

@Data
public class LotteryBet {

    @UniqueElements
    private List<Integer> numbers;
}

然后确保您的 Controller 带有 @Validated 注释和 lotteryBet参数均用 @RequestBody 进行注释和 @Valid :

@Validated
@RestController
@RequestMapping("/lottery")
public class LotteryController {

    @PostMapping(path = "/bets", consumes = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Void> bet(@RequestBody @Valid LotteryBet lotteryBet) {
        ...
    }
}

如下所示的请求将返回 400以及有关错误的一些详细信息:

POST /lottery/bets HTTP/1.1
Host: example.org
Content-Type: application/json

{
  "numbers": [1, 2, 3, 3, 4, 4]
}

关于java - 如何在java spring中的列表中有效重复元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57769675/

相关文章:

java - 通过字段 'personRepository' 表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException :

java - 如何使用 Java 11 获取 CPU 利用率

java - 如果用户没有正确的角色,如何重定向? Spring 安全

java - 是否可以在主类之外调用重写的方法?

java - 如何在没有网络访问的情况下将 parckage(例如 mmlspark)安装到 CDH 集群?

spring - 如何在两个应用程序之间共享同一个 session

java - Pivotal Cloud Foundry - 应用程序日志记录

java - Spring组件中如何访问HttpServletResponse?

java - 没有@ EnableWebMvc,NoHandlerFoundException的自定义异常处理程序将无法工作

java - 每秒在 Fragment 中执行方法 - 第二次运行时为 NULL 值