Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में सिंगलटन में HashMap कैसे स्टोर करें?

एंड्रॉइड में सिंगलटन पैटर्न का उपयोग करके HashMap स्टोर करना

यह ट्यूटोरियल सिंगलटन डिज़ाइन पैटर्न को लागू करके एप्लिकेशन-वाइड HashMap स्टोरेज के लिए एक केंद्रीय एक्सेस पॉइंट बनाने का तरीका दिखाता है।

सिंगलटन पैटर्न क्या है?

सिंगलटन एक डिज़ाइन पैटर्न है जो एक वर्ग के इंस्टेंशिएशन को एक ही इंस्टेंस तक सीमित करता है। यह साझा संसाधनों तक पहुंच को नियंत्रित करने और डेटा स्टोर के लिए एक वैश्विक एक्सेस पॉइंट प्रदान करने के लिए उपयोगी है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनें।

चरण 2: लेआउट फ़ाइल (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="सिंगलटन में HashMap सेव करें"
        android:padding="16dp" />

</LinearLayout>

चरण 3: SingletonHashMap.java (सिंगलटन वर्ग)

package com.example.singletonhashmap;

import android.content.Context;
import java.util.HashMap;
import java.util.Map;

public class SingletonHashMap {

    // एकमात्र इंस्टेंस
    private static volatile SingletonHashMap instance;
    private final Map<String, Double> dataMap = new HashMap<>();
    private Context appContext;

    // निजी कंस्ट्रक्टर
    private SingletonHashMap() {}

    // थ्रेड-सेफ इंस्टेंस प्राप्ति (डबल-चेक्ड लॉकिंग)
    public static SingletonHashMap getInstance() {
        if (instance == null) {
            synchronized (SingletonHashMap.class) {
                if (instance == null) {
                    instance = new SingletonHashMap();
                }
            }
        }
        return instance;
    }

    // एप्लिकेशन कंटेक्स्ट इनिशियलाइज़ करें
    public void init(Context context) {
        if (appContext == null) {
            this.appContext = context.getApplicationContext();
        }
    }

    public Context getContext() {
        return appContext;
    }

    public static Context getGlobalContext() {
        return getInstance().getContext();
    }

    // HashMap में डेटा डालें
    public void put(String key, double value) {
        dataMap.put(key, value);
    }

    // मान प्राप्त करें
    public Double get(String key) {
        return dataMap.get(key);
    }

    // पूरा मैप प्राप्त करें
    public Map<String, Double> getMap() {
        return new HashMap<>(dataMap); // कॉपी लौटाएं ताकि बाहरी संशोधन रोका जा सके
    }

    // मैप साफ़ करें
    public void clear() {
        dataMap.clear();
    }

    @Override
    public String toString() {
        return dataMap.toString();
    }
}

चरण 4: MainActivity.java

package com.example.singletonhashmap;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private Button btnSave;
    private SingletonHashMap singleton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnSave = findViewById(R.id.btnSave);
        singleton = SingletonHashMap.getInstance();
        singleton.init(getApplicationContext());

        btnSave.setOnClickListener(v -> {
            // सिंगलटन में डेटा स्टोर करें
            singleton.put("कागज", 10.0);
            singleton.put("रिचार्ज", 10.0);
            singleton.put("अन्य बिल", 10.0);

            // टोस्ट के माध्यम से प्रदर्शित करें
            Toast.makeText(this, "स्टोर किया गया: " + singleton.toString(), Toast.LENGTH_LONG).show();
        });
    }
}

मुख्य बिंदु

  • थ्रेड-सेफ: डबल-चेक्ड लॉकिंग के साथ volatile कीवर्ड
  • ग्लोबल कंटेक्स्ट: एप्लिकेशन कंटेक्स्ट स्टोर करता है ताकि मेमोरी लीक न हो
  • एनकैप्सुलेशन: आंतरिक मैप की कॉपी लौटाता है ताकि बाहरी संशोधन रोका जा सके
  • उपयोगिता विधियां: put(), get(), clear(), getMap()

ऐप चलाएं

"सिंगलटन में HashMap सेव करें" बटन पर क्लिक करें। टोस्ट स्टोर किए गए मान दिखाएगा।

एंड्रॉइड में सिंगलटन में HashMap कैसे स्टोर करें? एंड्रॉइड में सिंगलटन में HashMap कैसे स्टोर करें?

उपयोग के मामले: कैशिंग, सेशन डेटा, कॉन्फ़िगरेशन सेटिंग्स, या कोई भी साझा राज्य जिसे ऐप-वाइड एक्सेस की आवश्यकता होती है।

  1. Android SQLite में दशमलव (Decimal) मान कैसे स्टोर करें? Android SQLite में दशमलव (Decimal) मान कैसे स्टोर करें?

    Android SQLite में दशमलव (Decimal) मान स्टोर करना यह उदाहरण दर्शाता है कि Android SQLite में DECIMAL डेटा टाइप का उपयोग करके दशमलव मान (जैसे वेतन) कैसे स्टोर किए जाते हैं। SQLite क्या है? SQLite एक ओपन-सोर्स SQL डेटाबेस है जो डिवाइस पर टेक्स्ट फाइल में डेटा स्टोर करता है। Android में बिल्ट-इन SQLit

  1. Android में HashMap को GSON का उपयोग करके JSON में कैसे बदलें? Android में HashMap को GSON का उपयोग करके JSON में कैसे बदलें?

    Android में GSON लाइब्रेरी का उपयोग करके HashMap को JSON में परिवर्तित करना GSON एक जावा लाइब्रेरी है। इसका उपयोग OBJECT को JSON में और JSON को Object में बदलने के लिए किया जाता है। आंतरिक रूप से यह सीरियलाइज़ेशन और डीसीरियलाइज़ेशन पर आधारित काम करता है। यह उदाहरण दर्शाता है कि GSON लाइब्रेरी का उपय

  1. एंड्रॉइड में डिवाइस ID कैसे प्राप्त करें और स्टोर करें? एंड्रॉइड में डिवाइस ID कैसे प्राप्त करें और स्टोर करें?

    एंड्रॉइड में डिवाइस ID (Android ID) प्राप्त करना और स्टोर करना एंड्रॉइड प्रत्येक डिवाइस के लिए एक यूनिक 64-बिट हेक्साडेसिमल स्ट्रिंग जेनरेट करता है जिसे **Android ID** (SSAID) कहते हैं। यह डिवाइस की पहली बूट पर बनता है और फैक्ट्री रीसेट तक समान रहता है। ध्यान दें: Android 8.0 (API 26) से प्रत्येक ऐप