"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > उन्नत जावा स्ट्रीम ट्रिक्स जो आपको जानना आवश्यक है

उन्नत जावा स्ट्रीम ट्रिक्स जो आपको जानना आवश्यक है

2024-11-18 को प्रकाशित
ब्राउज़ करें:210

dvanced Java Stream Tricks You Need to Know

1. किसी इकाई को कैश करने के लिए एक मानचित्र बनाना

मानचित्र में संस्थाओं को कैशिंग करने से डेटाबेस या अन्य डेटा स्रोतों से बार-बार डेटा लाने की आवश्यकता को कम करके प्रदर्शन में सुधार हो सकता है। जावा स्ट्रीम से आप आसानी से ऐसा कैश बना सकते हैं।

उदाहरण कोड

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

class User {
    private int id;
    private String name;

    // Constructors, getters, setters
}

public class EntityCacheExample {
    public static void main(String[] args) {
        List users = List.of(
            new User(1, "Alice"),
            new User(2, "Bob"),
            new User(3, "Charlie")
        );

        Map userCache = users.stream()
            .collect(Collectors.toMap(User::getId, user -> user));

        System.out.println(userCache);
    }
}

उपरोक्त कोड में, हम उपयोगकर्ता ऑब्जेक्ट की एक सूची को मानचित्र में बदलने के लिए Collectors.toMap() का उपयोग करते हैं जहां कुंजी उपयोगकर्ता की आईडी है और मान उपयोगकर्ता ऑब्जेक्ट ही है। यह प्रभावी रूप से उपयोगकर्ता संस्थाओं का एक कैश बनाता है।

डेमो परिणाम

{1=User{id=1, name='Alice'}, 2=User{id=2, name='Bob'}, 3=User{id=3, name='Charlie'}}

2. नेस्टेड मानचित्र बनाना

नेस्टेड मानचित्र तब उपयोगी हो सकते हैं जब आपको डेटा को कई स्तरों में वर्गीकृत करने की आवश्यकता होती है। उदाहरण के लिए, हो सकता है कि आप उपयोगकर्ताओं को उनके विभाग और फिर उनकी भूमिका के आधार पर समूहित करना चाहें।

उदाहरण कोड

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

class User {
    private String department;
    private String role;
    private String name;

    // Constructors, getters, setters
}

public class NestedMapExample {
    public static void main(String[] args) {
        List users = List.of(
            new User("HR", "Manager", "Alice"),
            new User("IT", "Developer", "Bob"),
            new User("IT", "Manager", "Charlie")
        );

        Map>> nestedMap = users.stream()
            .collect(Collectors.groupingBy(User::getDepartment,
                Collectors.groupingBy(User::getRole)));

        System.out.println(nestedMap);
    }
}

यह कोड दर्शाता है कि नेस्टेड मैप बनाने के लिए Collectors.groupingBy() का उपयोग कैसे करें। बाहरी Map उपयोगकर्ताओं को विभाग के आधार पर समूहित करता है, जबकि आंतरिक Map उन्हें भूमिका के आधार पर समूहित करता है।

डेमो परिणाम

{HR={Manager=[User{name='Alice'}]}, IT={Developer=[User{name='Bob'}], Manager=[User{name='Charlie'}]}}

3. दो मानों वाला मानचित्र बनाना

कभी-कभी, आप मानचित्र में एक ही कुंजी के लिए एकाधिक विशेषताओं को संग्रहीत करना चाह सकते हैं। मानचित्र का उपयोग करना
>
एक प्रभावी समाधान हो सकता है।

उदाहरण कोड

import java.util.List;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Collectors;

class User {
    private int id;
    private String name;
    private int age;

    // Constructors, getters, setters
}

public class MapWithTwoValuesExample {
    public static void main(String[] args) {
        List users = List.of(
            new User(1, "Alice", 30),
            new User(2, "Bob", 25),
            new User(3, "Charlie", 35)
        );

        Map> userMap = users.stream()
            .collect(Collectors.toMap(User::getId, user -> 
                new SimpleEntry(user.getName(), user.getAge())));

        System.out.println(userMap);
    }
}

यहां, हम प्रत्येक उपयोगकर्ता आईडी से जुड़े दो मानों-नाम और उम्र-के साथ एक मानचित्र बनाने के लिए SimpleEntry का उपयोग करते हैं।

डेमो परिणाम

{1=Alice=30, 2=Bob=25, 3=Charlie=35}

4. समूहीकरण और मानचित्रण

एक साथ समूहीकरण और मानचित्रण जटिल डेटा परिवर्तनों को सरल बना सकता है, जैसे वस्तुओं की सूची को समूहीकृत मानचित्र में परिवर्तित करना जहां प्रत्येक समूह में विशिष्ट विशेषताएं होती हैं।

उदाहरण कोड

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

class User {
    private String department;
    private String name;

    // Constructors, getters, setters
}

public class GroupingByMappingExample {
    public static void main(String[] args) {
        List users = List.of(
            new User("HR", "Alice"),
            new User("IT", "Bob"),
            new User("HR", "Charlie")
        );

        Map> groupedMap = users.stream()
            .collect(Collectors.groupingBy(User::getDepartment,
                Collectors.mapping(User::getName, Collectors.toList())));

        System.out.println(groupedMap);
    }
}

इस उदाहरण में, हम उपयोगकर्ताओं को विभाग के आधार पर समूहित करते हैं और फिर उपयोगकर्ता ऑब्जेक्ट को उनके नाम से मैप करते हैं, एक मैप बनाते हैं जहां प्रत्येक विभाग नामों की एक सूची से जुड़ा होता है।

डेमो परिणाम

{HR=[Alice, Charlie], IT=[Bob]}

5. समूहीकरण, मानचित्रण, और कम करना

ग्रुपिंग, मैपिंग और रिड्यूसिंग का संयोजन आपको डेटा को कुशलतापूर्वक एकत्र करने की अनुमति देता है, जैसे कि मूल्यों का योग करना या प्रत्येक समूह में अधिकतम मूल्य ढूंढना।

उदाहरण कोड

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

class Transaction {
    private String type;
    private int amount;

    // Constructors, getters, setters
}

public class GroupingByMappingReducingExample {
    public static void main(String[] args) {
        List transactions = List.of(
            new Transaction("Deposit", 100),
            new Transaction("Deposit", 200),
            new Transaction("Withdrawal", 50),
            new Transaction("Withdrawal", 30)
        );

        Map transactionSums = transactions.stream()
            .collect(Collectors.groupingBy(Transaction::getType,
                Collectors.reducing(0, Transaction::getAmount, Integer::sum)));

        System.out.println(transactionSums);
    }
}

इस कोड में, हम लेनदेन को प्रकार के आधार पर समूहित करते हैं, उन्हें उनकी मात्रा के अनुसार मैप करते हैं, और फिर उनका योग करके मात्रा को कम करते हैं। परिणाम एक मानचित्र है जो प्रत्येक लेनदेन प्रकार के लिए कुल राशि दिखाता है।

डेमो परिणाम

{Deposit=300, Withdrawal=80}

6. निष्कर्ष

ये उन्नत जावा स्ट्रीम ट्रिक्स आपकी कोडिंग दक्षता और पठनीयता को महत्वपूर्ण रूप से बढ़ा सकती हैं। इन तकनीकों में महारत हासिल करके, आप जटिल डेटा प्रोसेसिंग कार्यों को आसानी से संभाल सकते हैं। यदि आपके कोई प्रश्न हैं या अधिक स्पष्टीकरण की आवश्यकता है, तो बेझिझक नीचे टिप्पणी करें!

यहां अधिक पोस्ट पढ़ें : 5 उन्नत जावा स्ट्रीम ट्रिक्स जो आपको जानना आवश्यक हैं

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/anh_trntun_4732cf3d299/5-advanced-java-stream-tricks-you-need-to-know-4i8h?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163.com पर संपर्क करें। इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3