debugging - 使用 Java8 使用 endsWith 方法在另一个 ArrayList 中的一个 ArrayList 中查找字符串值
问题描述
我有以下代码。
public class ComparingTwoLists {
public static void main(String[] args) {
List<String> small = Arrays.asList("AA", "BB");
List<String> big = Arrays.asList("a.b.AA", "a.b.BB", "a.b.CC");
List<String> list = new ArrayList<String>();
Consumer<String> consumer = (String outer) -> {
Stream<String> stream1 = small.stream();
Consumer<String> innerConsumer = (String inner) -> {
if (outer.endsWith(inner)) {
list.add(outer);
}
};
stream1.forEach(innerConsumer);
};
Stream<String> stream2 = big.stream();
stream2.forEach(consumer);
System.out.println(list);
}
}
我正在尝试使用 endWith() 方法找出字符串末尾的大字符串值中是否存在小字符串值。
这是一种有效的方法吗?
我在这段代码中面临的另一个问题是,当我尝试调试这段代码时,我能够查看/检查inner的值,但无法查看outer的值。有没有办法在调试时检查外部的值。
解决方案
你可以这样做:
big.stream()
.filter(s -> small.stream().anyMatch(s::endsWith))
.collect(Collectors.toList());
推荐阅读
- regex - 从 arp -a 结果形成 JSON 的正则表达式
- android - Flutter Android 更新后出现问题
- excel - excel中如何将多列的数据放到一列中
- android - 使用 kotlin 协程时随机崩溃
- python - 使用 Python SimpleHTTPServer 提供没有 .html 的文件
- javascript - React Native - 我的本机功能无法识别
- python - 'BooleanField' 对象在 django 中没有属性'use_required_attribute'
- php - 使两个文件调整大小并保存到不同的文件夹
- awk - awk 打印的记录多于原始文件中的记录
- android - 从对话片段到片段获取日期