如何使用Java 8 Stream API实现List<Integer>到List<String>的规则映射
Java Stream Filter 逻辑实现方案
完整代码实现
import java.util.List; import java.util.stream.Collectors; public class StringMatcher { public static List<String> foo(List<Integer> integerList, List<String> stringList) { return integerList.stream() .map(n -> stringList.stream() // 这里就是你需要的filter逻辑 .filter(str -> str.length() == n && Character.isDigit(str.charAt(0))) .findFirst() .orElse("Not found")) .collect(Collectors.toList()); } // 测试示例 public static void main(String[] args) { List<Integer> integerList = List.of(1, 3, 4); List<String> stringList = List.of("1aa", "aaa", "1", "a"); System.out.println(foo(integerList, stringList)); // 输出 [1, 1aa, Not found] } }
Filter 逻辑说明
filter中需要同时满足两个条件:
str.length() == n:保证字符串长度与当前integerList中的数值n完全匹配Character.isDigit(str.charAt(0)):校验字符串的第一个字符是数字,满足“以数字开头”的要求
示例验证
对应你给出的输入:
- 当n=1时,筛选出长度为1且首字符是数字的字符串
"1",取第一个匹配项 - 当n=3时,筛选出长度为3且首字符是数字的字符串
"1aa" - 当n=4时,无符合条件的字符串,返回
"Not found"
最终输出与期望一致。
内容的提问来源于stack exchange,提问作者Jugjin
相关产品推荐
相关产品推荐

