Как разделить значения List<String> и поместить только числа в другой список

У меня есть значения списка как ["12-dept20","13-dept50"] я хочу разделить их на список, содержащий только цифры перед -, чтобы получить список как [12, 13]

Список. разделить с помощью потоков, но не уверен, как с этим работать. Любая помощь будет оценена по достоинству. Я использую Java 8

Список источников = ["12-депт20","13-депт50"];

Ожидал:

Список новый = [12, 13]

Добро пожаловать в Stack Overflow и спасибо за вопрос. Я предполагаю, что ваш вопрос был закрыт, потому что вы недостаточно четко продемонстрировали свои собственные усилия, пытаясь его решить. Большинству из нас гораздо больше нравится отчет о результатах вашего поиска и попытках написать код, и мы будем рады помочь вам исправить его, чтобы он работал.

Anonymous 08.05.2024 10:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
80
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ну вот:

List<String> source = List.of("12-dept20", "13-dept50");

List<Integer> target = source.stream()
        .map(entry -> entry.split("-")[0])
        .map(Integer::valueOf)
        .toList();

System.out.println(target);

Имейте в виду, что этот код не является отказоустойчивым на случай, если записи не могут быть проанализированы из-за неправильного формата.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        List<String> inputList = Arrays.asList("12-dept20", "13-dept50");
        List<String> outputList = extractNumbersBeforeDash(inputList);
        System.out.println(outputList); // output: [12, 13]
    }

    public static List<String> extractNumbersBeforeDash(List<String> lst) {
        List<String> numbers = new ArrayList<>();

        for (String s : lst) {
            int dashIndex = s.indexOf('-'); // Find the location of the dash
            if (dashIndex != -1) { // If a dash is found
                numbers.add(s.substring(0, dashIndex)); // Extract the part before the dash
            } else {
                // If there is no dash in the string, it can be processed according to the requirements. Here, it is simply skipped
                System.err.println("No dash found in string: " + s);
            }
        }
        return numbers;
    }
}

Отвечать

List<String> src = List.of("12-dept20", "13-dept50");
List<Integer> result = new ArrayList<>();
for (String str : src) {
    String[] parts = str.split("-");
    int number = Integer.parseInt(parts[0]);
    result.add(number);
}
System.out.println(result);

Другие вопросы по теме