Teknologian jakaminen

Kuinka käyttää Java Stream APIa keräystoimintojen yksinkertaistamiseen?

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Kuinka käyttää Java Stream APIa keräystoimintojen yksinkertaistamiseen?

Hei kaikki, olen Weizhuan Taoke System 3.0:n editori, ja olen myös ohjelmoija, joka ei käytä pitkiä housuja talvella, mutta joka on silti viileä kylmällä säällä!

Java Stream API on uusi abstrakti käsite, joka esiteltiin Java 8:ssa kokoelmaobjektien funktionaalisiin operaatioihin. Sen avulla voimme käsitellä kokoelmatietoja tiiviimmällä ja luettavammalla tavalla, mukaan lukien suodatus, kartoitus, suodatus, lajittelu ja muut toiminnot.

Striimin luominen ja perustoiminnot

Stream API:n avulla voimme luoda streamin useilla tavoilla, kuten kokoelmamuunnos, taulukkomuunnos jne. Tässä on joitain esimerkkejä Streamin perustoiminnoista:

package cn.juwatech.stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class StreamExample {

    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva");

        // 筛选名字长度大于3的人,并转换为大写
        List<String> filteredNames = names.stream()
                .filter(name -> name.length() > 3)
                .map(String::toUpperCase)
                .collect(Collectors.toList());

        System.out.println("Filtered and transformed names: " + filteredNames);

        // 计算所有名字长度的总和
        int totalLength = names.stream()
                .mapToInt(String::length)
                .sum();

        System.out.println("Total length of all names: " + totalLength);

        // 判断集合中是否存在名字以'A'开头的
        boolean anyStartsWithA = names.stream()
                .anyMatch(name -> name.startsWith("A"));

        System.out.println("Any name starts with 'A'? " + anyStartsWithA);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

Streamin lisätoiminnot

Perussuodatus-, kartoitus- ja pienennystoimintojen lisäksi Stream API tarjoaa myös runsaasti edistyneitä toimintoja, kuten lajittelua, ryhmittelyä, päällekkäisyyden poistamista jne. Tässä on esimerkkejä edistyneistä toiminnoista:

package cn.juwatech.stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class AdvancedStreamOperations {

    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 对数字进行平方映射,然后筛选出大于20的数字,并按降序排序
        List<Integer> result = numbers.stream()
                .map(n -> n * n)
                .filter(n -> n > 20)
                .sorted((a, b) -> b - a)
                .collect(Collectors.toList());

        System.out.println("Result after mapping, filtering, and sorting: " + result);

        // 将字符串列表拼接成一个字符串
        List<String> words = Arrays.asList("Java", "Stream", "API", "is", "awesome");

        String concatenatedString = words.stream()
                .collect(Collectors.joining(" "));

        System.out.println("Concatenated string: " + concatenatedString);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

Parallel Stream -toiminnot

Stream API tukee myös rinnakkaisprosessointia, mikä voi parantaa merkittävästi moniytimisprosessorien toimintatehokkuutta.Voimme tehdä tämän soittamallaparallel()Menetelmä muuntaa peräkkäisen virran rinnakkaiseksi virraksi.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva");

// 并行处理:筛选名字长度大于3的人,并转换为大写
List<String> parallelFilteredNames = names.parallelStream()
        .filter(name -> name.length() > 3)
        .map(String::toUpperCase)
        .collect(Collectors.toList());

System.out.println("Parallel filtered and transformed names: " + parallelFilteredNames);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Johtopäätös

Tämän artikkelin esittelyn myötä meillä on syvällinen käsitys Java Stream API:n peruskäytöstä ja sen edistyneistä toiminnoista. Stream API ei ainoastaan ​​yksinkertaista kokoelman toimintakoodia, vaan myös parantaa koodin luettavuutta ja ylläpidettävyyttä. Se on välttämätön osa nykyaikaista Java-kehitystä.

Micro-earning Taoke System 3.0:n toimittajan tuottaman tuotteen on oltava korkealaatuinen. Ilmoita lähde uusintapainossa!