Рубрики
Без рубрики

Потоковый API Java 8 для массивов

использование Java 8 stream api для массива строк. Помеченный как java, stream, functional.

Java 8 ввела концепцию функционального программирования. Мой первый инстинкт, когда мне нужно выполнить итерацию, – использовать цикл for. Итак, вот некоторые распространенные операции с массивами с использованием stream api. Я буду ссылаться на этот пост, когда мне понадобится дружеское напоминание. ИСПОЛЬЗУЙТЕ БОЛЬШЕ ПОТОКОВ! Вы можете прочитать больше о потоках java здесь . Также я использую ссылочный синтаксис метода Java 8, вы можете прочитать больше об этой теме здесь .

Учитывая массив строк, представляющих номер телефона, отформатируйте и выведите каждую из них на консоль.

String[] phoneNumbers = new String[] {"3125550909", "3125557676", "3125552323", "3125556161", "3125554141"};

String[] formattedPhoneNumbers = Arrays.stream(phoneNumbers)
        .map(value -> String.format("1-(%s)-%s-%s", value.substring(0,3), value.substring(3,6), value.substring(6,10)))
        .toArray(String[]::new);

Arrays.stream(formattedPhoneNumbers).forEach(System.out::println);

Учитывая массив строк, представляющих почтовые индексы, отфильтруйте ненужные почтовые индексы и выведите оставшиеся на консоль.

String[] zipCodes = new String[] {"60640","94102", "60602", "94115", "60647", "94140"};

String[] subsetZipCodes = Arrays.stream(zipCodes)
        .filter(value -> value.contains("606"))
        .toArray(String[]::new);

Arrays.stream(subsetZipCodes).forEach(System.out::println);

Учитывая массив предложений, подсчитайте количество вхождений для каждого слова и выведите на консоль.

String[] lines = new String[] {
        "toast for breakfast ",
        "sleepy in chicago",
        "tired in the morning",
        "coffee in the morning",
        "sleepy breakfast today",
        "breakfast in chicago" };

Map  wordCount = Arrays.stream(lines)
        .map(w -> w.split("\\s+"))
        .flatMap(Arrays::stream)
        .collect(Collectors.toMap(w -> w, w -> 1, Integer::sum));

wordCount.forEach((k, v) -> System.out.println(String.format("%s ==>> %d", k, v)));

Учитывая массив имен и пользовательский класс игрока Nba, создайте новый массив с элементами типа игрока Nba.

String[] names = {"lebron", "kyrie", "doncic", "davis", "lavine"};

class NbaPlayer {
    String name;
    NbaPlayer(String name){
        this.name = name;
    }

    @Override
    public String toString() {
        return "NbaPlayer{" +
                "name='" + name + '\'' +
                '}';
    }
}

NbaPlayer[] players = Arrays.stream(names).map(NbaPlayer::new).toArray(NbaPlayer[]::new);

Arrays.stream(players).forEach(System.out::println);

На данный момент это все. Возможно, в следующем посте я больше поработаю с потоками и другими структурами данных. ArrayLists наверняка. Лаборатория

Оригинал: “https://dev.to/henriavo/java-8-stream-api-on-arrays-3epa”