Как я могу проверить содержит ли список строк(ArrayList ) какой то символ?

Задача такова что нужно проверить есть ли буква "P".ignoreCase в массиве

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;


public class letterPletterN {


    public static void main(String[] args) throws IOException {
        ArrayList<String> list = new ArrayList<>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        for (int i = 0; i < 5; i++) {
            list.add(reader.readLine());
        }
        fix(list);

    }

    public static String fix(ArrayList<String> list, String testStr) {
        for (int j = 0; j < testStr.length(); j++) {
            boolean found = false;
            for (int i = 0; i < list.size() && !found; i++) {
                found = list.get(i).indexOf(testStr.charAt(j)) >= 0;
            }
        }
        return testStr;
    }
}

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

Автор решения: Nowhere Man

Если нужно проверить наличие некоторого одного символа в списке строк, следует создать метод, принимающий список строк и символ в качестве аргументов и возвращающий булево значение:

public static boolean listContainsChar(List<String> list, char c) {
    c = Character.toLowerCase(c);
    for (String str : list) {
        for (int i = 0, n = str.length(); i < n; i++) {
            char symbol = Character.toLowerCase(str.charAt(i));
            if (c == symbol) {
                return true;
            }
        }
    }
    return false;
}

С использованием Stream API код немного сократится:

public static boolean listContainsChar(List<String> list, char c) {
    char lc = Character.toLowerCase(c);
    return list.stream() // Stream<String> поток строк
        .flatMapToInt(String::chars) // IntStream превратить в общий поток символов
        .map(Character::toLowerCase) // IntStream поток строчных символов
        .anyMatch(symb -> lc == symb); // любое совпадение  
}
→ Ссылка