首页 > 解决方案 > 使用 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的值。有没有办法在调试时检查外部的值。

标签: debuggingjava-8

解决方案


你可以这样做:

big.stream()
    .filter(s -> small.stream().anyMatch(s::endsWith))
    .collect(Collectors.toList());

推荐阅读