Перебор массива и проверка наличия элементов char в string через Stream

Подскажите, пожалуйста, c таким вопросом. Даны два массива:

static String[] arr = {"Hello", "World", "Bobby", "Sam"};
static char[] chars = {'h', 'o'};

Каким образом можно только лишь с помощью Stream найти совпадения символов из массива char со строкой из массива String и вывести в консоль?

Я сделал такую реализацию, но подозреваю есть более правильное решение:

for (Character c : chars) {
    Arrays.stream(arr).filter(a -> a.contains(c.toString())).forEach(System.out::println);
    }

Ответы (1 шт):

Автор решения: Aziz Umarov

Как-то так

public static void main(String[] args) {
    String[] arr = {"Hello", "World", "Bobby", "Sam"};
    char[] chars = {'H', 'o'};

    Arrays.stream(arr)
        .filter(
            a ->
                new String(chars)
                    .chars()
                    .mapToObj(i -> (char) i)
                    .anyMatch(c -> a.contains(c.toString())))
        .forEach(System.out::println); // Hello World Bobby
  }
→ Ссылка