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

Android में CopyOnWriteArrayList में इंडेक्स पर एलिमेंट कैसे जोड़ें?

CopyOnWriteArrayList में add(index, element) का उपयोग

CopyOnWriteArrayList एक थ्रेड-सेफ ArrayList वेरिएंट है जहां हर म्यूटेटिव ऑपरेशन (add, set, remove) एक नया आंतरिक ऐरे बनाता है। पढ़ने-भारी, लिखने-कम परिदृश्यों के लिए आदर्श।

चरण 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:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/actionEvent"
        android:textSize="40sp"
        android:layout_marginTop="30dp"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />

</LinearLayout>

चरण 3: MainActivity.java - इंडेक्स पर इन्सर्ट

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.concurrent.CopyOnWriteArrayList;

public class MainActivity extends AppCompatActivity {

    CopyOnWriteArrayList<String> copyOnWriteArrayList;

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        copyOnWriteArrayList = new CopyOnWriteArrayList<>();
        final TextView actionEvent = findViewById(R.id.actionEvent);

        // प्रारंभिक डेटा
        copyOnWriteArrayList.add("साई");
        copyOnWriteArrayList.add("राम");
        copyOnWriteArrayList.add("कृष्ण");
        copyOnWriteArrayList.add("प्रसाद");
        copyOnWriteArrayList.add("राम"); // डुप्लीकेट अनुमत

        actionEvent.setText("" + copyOnWriteArrayList);

        // क्लिक पर इंडेक्स 0 पर एलिमेंट जोड़ें
        actionEvent.setOnClickListener(v -> {
            copyOnWriteArrayList.add(0, "पहला एलिमेंट");
            actionEvent.setText("" + copyOnWriteArrayList);
        });
    }
}

CopyOnWriteArrayList की विशेषताएं:

  • थ्रेड-सेफ इटेरेशन: इटेरेटर स्नैपशॉट पर काम करते हैं, ConcurrentModificationException नहीं फेंकते।
  • कॉपी-ऑन-राइट: हर लिखने पर नया ऐरे बनता है - मेमोरी और CPU खर्च होता है।
  • उपयोग केस: ऑब्जर्वर पैटर्न, इवेंट लिसनर लिस्ट्स, कैश जहां पढ़ना बहुत ज्यादा हो।
  • डुप्लीकेट्स अनुमत: Set नहीं, List है।

परिणाम

पहले: [साई, राम, कृष्ण, प्रसाद, राम]

क्लिक के बाद: [पहला एलिमेंट, साई, राम, कृष्ण, प्रसाद, राम]

Android में CopyOnWriteArrayList में इंडेक्स पर एलिमेंट कैसे जोड़ें?

Android में CopyOnWriteArrayList में इंडेक्स पर एलिमेंट कैसे जोड़ें?

सावधानी:

बड़े लिस्ट्स पर बार-बार add(index, ...) न करें - हर बार O(n) कॉपी होती है।

  1. एंड्रॉइड नोटिफिकेशन में बटन कैसे जोड़ें? एंड्रॉइड नोटिफिकेशन में बटन कैसे जोड़ें?

    यह गाइड **NotificationCompat.Action** और **BroadcastReceiver** का उपयोग करके एंड्रॉइड नोटिफिकेशन में इंटरैक्टिव एक्शन बटन (जैसे उत्तर दें, स्नूज़, खारिज करें) जोड़ने का तरीका दिखाता है। मुख्य अवधारणा नोटिफिकेशन एक्शन बटन के लिए PendingIntent.getBroadcast() की आवश्यकता होती है (getActivity() नहीं) त

  1. Android ListView में फुटर (Footer) कैसे जोड़ें? Android ListView में फुटर (Footer) कैसे जोड़ें?

    Android ListView में कस्टम फुटर व्यू जोड़ना ListView के अंत में एक फुटर व्यू (जैसे सूची समाप्त संदेश) जोड़ने का तरीका सीखें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project से प्रोजेक्ट बनाएं। चरण 2: मेन लेआउट में ListView res/layout/activity_main.xml: <RelativeLayout xmlns:and

  1. एंड्रॉइड में डायनामिकली बटन कैसे जोड़ें? एंड्रॉइड में डायनामिकली बटन कैसे जोड़ें?

    एंड्रॉइड में रनटाइम पर प्रोग्रामेटिकली बटन (या कोई व्यू) जोड़ना कभी-कभी लेआउट XML में नहीं, बल्कि डेटा/शर्तों के आधार पर रनटाइम पर व्यूज जोड़ने पड़ते हैं। इसके लिए: **पैरेंट व्यूग्रुप प्राप्त करें → नया व्यू बनाएं → LayoutParams सेट करें → addView() कॉल करें।** चरण 1: नया प्रोजेक्ट बनाएं Android St