Java - сортировка

Всем здравствуйте, есть проблема. Я пишу Discord бота, и возникла потребность получить все каналы на сервере. Но есть проблема, они получаются, но в List'e. При этом, вывод будет таким:

[GC:Text Channels(728238503908999259), TC:general(728238503908999261), GC:Voice Channels(728238503908999260), VC:General(728238503908999263), GC:lox(728238532560158732), TC:test(728238545646649394)]

Большое количество информации мне здесь попросту не нужно, а нужен лишь ID канала, это цифры, а конкретно: [GC:Text Channels(вот_этот_самый_ID_728238503908999259). И мне нужно извлечь ID сразу всех каналов, и не известно, сколько их будет. Можно ли это как то реализовать?


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

Автор решения: Sergey Gornostaev

Примерно так

List<Integer> ids = someList.stream()
    .map(Channel::getId)
    .collect(Collectors.toList());

Надо только ссылку на метод получения идентификатора подставить актуальную.

→ Ссылка
Автор решения: Дмитрий

Я так понимаю, что исходные данные в коллекции стрингов, а не объектов и парсить нужно именно стринг. Тогда так:

public static List<Long> main(List<String> list) {
    return list.stream()
            .map(s -> s.substring(s.indexOf("(")+1, s.indexOf(")")))
            .map(Long::valueOf)// если нужен ID в переменных типа Long
            .collect(Collectors.toList());
}
→ Ссылка