Не создаётся список на основе массива

У меня есть 2 массива типа char, мне нужно удалить из них определённые символы, для этого я хочу сделать их списками, чтобы затем использовать remove(), но при создании списка на основе массива выдаётся ошибка, подскажите пожалуйста, как исправить?

 char[] a = input1.toString().toCharArray();
    char[] b = input2.toString().toCharArray();

    List<Character> ababa = new ArrayList<Character>(a);

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

Автор решения: Дмитрий

Проблема в том, что вы получаете массив примитивов , а коллекции не умеют работать с примитивами. Мне кажется, что в этом случае проще сразу получит лист вместо ненужного массива:

List<Character> a = input1.toString().chars().mapToObj(e->(char)e).collect(Collectors.toList());
List<Character> b = input2.toString().chars().mapToObj(e->(char)e).collect(Collectors.toList());
→ Ссылка
Автор решения: Nowhere Man

У меня есть 2 массива типа char, мне нужно удалить из них определённые символы

char[] a = input1.toString().toCharArray();
char[] b = input2.toString().toCharArray();

Проще удалить символы из строки без всяких преобразований в списки, используя String::replaceAll, и потом сгенерировать нужный массив:

// удалить символы a, b, или c
char[] a = input1.toString().replaceAll("[abc]", "").toCharArray(); 
// удалить все цифры
char[] b = input2.toString().replaceAll("\\d+", "").toCharArray();

Если всё-таки есть желание получить список символов, то в связи с тем, что для этого и так придётся использовать Stream API, сразу же можно отфильтровать ненужные символы при помощи Stream::filter (используя "отрицательное" условие):

char[] a = input1.toString().chars() // IntStream
    .filter(c -> c != 'a' && c != 'b' && c != 'c') // исключить a, b, c
//  .filter(c -> !Character.isDigit(c)) // исключить цифры
    .mapToObj(Character::toString) // Stream<String>
    .collect(Collectors.joining()) // отфильтрованная строка
    .toCharArray();
→ Ссылка