gpt4 book ai didi

java - 如果过滤器为假,如何返回整个列表

转载 作者:行者123 更新时间:2023-11-30 06:41:53 25 4
gpt4 key购买 nike

我有这个列表

List<String> lstStr = new ArrayList<>();
lstStr.add("1");
lstStr.add("2");
lstStr.add("3");
lstStr.add("4");
lstStr.add("5");

当我搜索字符串 "1" 时,它应该返回 List<String> = ["1"]如果搜索字符串不在列表中,例如 "0",它应该返回整个 List <String> =["1","2","3","4","5"] .这可以使用java流来实现吗?请举个例子。

我已经使用下面的代码进行了尝试,但是当我搜索 say "0"

时,我可以获得整个列表
List<String> filteredLst = lstStr.stream()
.filter(data-> "1".equalsIgnoreCase(data))
.collect(Collectors.toList());

filteredLst.forEach(data2 -> System.out.println(data2));

提前致谢。

最佳答案

您可以对谓词进行分区并返回非空列表:

Map<Boolean, List<String>> split = lstStr.stream()
.collect(Collectors.partitioningBy("1"::equalsIgnoreCase));

List<String> filteredLst = split.get(Boolean.TRUE).isEmpty() ?
split.get(Boolean.FALSE) : //can also use lstStr instead
split.get(Boolean.TRUE);

Collectors.partitioningBy("1"::equals) 将返回一个包含 2 个条目的映射,其中 true 将是满足过滤器的条目的键,并且false 其余的关键。

filteredLst 应该包含映射到 true 的值(如果它不为空),否则包含 false 的值(这肯定是与他的原始列表相同)

关于java - 如果过滤器为假,如何返回整个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54454786/

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