Κοινή χρήση τεχνολογίας

Πώς να χρησιμοποιήσετε το Java Stream API για να απλοποιήσετε τις λειτουργίες συλλογής;

2024-07-12

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

Πώς να χρησιμοποιήσετε το Java Stream API για να απλοποιήσετε τις λειτουργίες συλλογής;

Γεια σε όλους, είμαι ο συντάκτης του Weizhuan Taoke System 3.0 και είμαι επίσης προγραμματιστής που δεν φοράει long john το χειμώνα, αλλά πρέπει ακόμα να είναι δροσερός στον κρύο καιρό!

Το Java Stream API είναι μια νέα αφηρημένη έννοια που εισήχθη στην Java 8 για λειτουργίες λειτουργικού στυλ σε αντικείμενα συλλογής. Μας επιτρέπει να επεξεργαζόμαστε δεδομένα συλλογής με πιο συνοπτικό και ευανάγνωστο τρόπο, συμπεριλαμβανομένου του φιλτραρίσματος, της χαρτογράφησης, του φιλτραρίσματος, της ταξινόμησης και άλλων λειτουργιών.

Δημιουργία ροής και βασικές λειτουργίες

Χρησιμοποιώντας το Stream API, μπορούμε να δημιουργήσουμε μια ροή με διάφορους τρόπους, όπως μετατροπή συλλογής, μετατροπή πίνακα κ.λπ. Ακολουθούν μερικά βασικά παραδείγματα λειτουργίας Stream:

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

Προηγμένες λειτουργίες του Stream

Εκτός από τις βασικές λειτουργίες φιλτραρίσματος, χαρτογράφησης και μείωσης, το Stream API παρέχει επίσης μια πληθώρα προηγμένων λειτουργιών, όπως ταξινόμηση, ομαδοποίηση, κατάργηση διπλότυπων κ.λπ. Ακολουθούν μερικά παραδείγματα προηγμένων λειτουργιών:

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

Λειτουργίες παράλληλης ροής

Το Stream API υποστηρίζει επίσης παράλληλη επεξεργασία, η οποία μπορεί να βελτιώσει σημαντικά την απόδοση λειτουργίας σε πολυπύρηνες CPU.Μπορούμε να το κάνουμε αυτό καλώνταςparallel()Η μέθοδος μετατρέπει μια διαδοχική ροή σε μια παράλληλη ροή.

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

συμπέρασμα

Μέσα από την εισαγωγή αυτού του άρθρου, έχουμε μια εις βάθος κατανόηση της βασικής χρήσης του Java Stream API και των προηγμένων λειτουργιών του. Το Stream API μπορεί όχι μόνο να απλοποιήσει τον κώδικα λειτουργίας συλλογής, αλλά και να βελτιώσει την αναγνωσιμότητα και τη δυνατότητα συντήρησης του κώδικα. Είναι απαραίτητο μέρος της σύγχρονης ανάπτυξης Java.

Παράγεται από τον συντάκτη του Micro-earning Taoke System 3.0, πρέπει να είναι προϊόν υψηλής ποιότητας, αναφέρετε την πηγή κατά την επανεκτύπωση.