gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:43:54 25 4
gpt4 key购买 nike

我想在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com