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

एंड्रॉइड में NavigableSet इंटरफेस का उपयोग कैसे करें?

एंड्रॉइड में NavigableSet इंटरफेस का उपयोग करना

यह उदाहरण दर्शाता है कि NavigableSet (TreeSet द्वारा इम्प्लीमेंटेड) का उपयोग करके सॉर्टेड सेट में नेविगेशन ऑपरेशन कैसे करें।

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

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 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"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="नाम दर्ज करें" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="सेव करें" />

        <Button
            android:id="@+id/refresh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="रिफ्रेश" />

    </LinearLayout>

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

चरण 3: MainActivity.java

package com.example.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.NavigableSet;
import java.util.TreeSet;

public class MainActivity extends AppCompatActivity {

    private EditText nameEditText;
    private ListView listView;
    private ArrayAdapter<String> arrayAdapter;
    private ArrayList<String> arrayList;
    private NavigableSet<String> navigableSet = new TreeSet<>(); // NavigableSet इंटरफेस

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

        nameEditText = findViewById(R.id.name);
        listView = findViewById(R.id.listView);
        arrayList = new ArrayList<>();

        // रिफ्रेश बटन
        findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (arrayAdapter != null) {
                    arrayAdapter.notifyDataSetChanged();
                }
            }
        });

        // सेव बटन
        findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = nameEditText.getText().toString().trim();
                if (!name.isEmpty()) {
                    boolean added = navigableSet.add(name);
                    updateListView();
                    
                    // NavigableSet फीचर्स डेमो
                    StringBuilder info = new StringBuilder();
                    info.append("जोड़ा गया: ").append(added ? "हाँ" : "नहीं (डुप्लीकेट)").append("\n");
                    info.append("पहला: ").append(navigableSet.first()).append("\n");
                    info.append("अंतिम: ").append(navigableSet.last()).append("\n");
                    info.append("आकार: ").append(navigableSet.size());
                    
                    Toast.makeText(MainActivity.this, info.toString(), Toast.LENGTH_LONG).show();
                } else {
                    nameEditText.setError("नाम दर्ज करें");
                }
            }
        });
    }

    private void updateListView() {
        arrayList.clear();
        arrayList.addAll(navigableSet); // सॉर्टेड क्रम में
        
        if (arrayAdapter == null) {
            arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
            listView.setAdapter(arrayAdapter);
        } else {
            arrayAdapter.notifyDataSetChanged();
        }
    }
}

NavigableSet के मुख्य मेथड्स (TreeSet में उपलब्ध)

मेथडविवरण
first()सबसे छोटा एलिमेंट
last()सबसे बड़ा एलिमेंट
lower(E e)दिए गए एलिमेंट से सख्ती से कम सबसे बड़ा
floor(E e)दिए गए एलिमेंट से कम या बराबर सबसे बड़ा
higher(E e)दिए गए एलिमेंट से सख्ती से बड़ा सबसे छोटा
ceiling(E e)दिए गए एलिमेंट से बड़ा या बराबर सबसे छोटा
pollFirst()पहला एलिमेंट हटाकर लौटाता है
pollLast()अंतिम एलिमेंट हटाकर लौटाता है

सबसेट ऑपरेशन्स

NavigableSet<String> set = new TreeSet<>();
set.addAll(Arrays.asList("A", "B", "C", "D", "E", "F"));

// रेंज क्वेरी
set.subSet("B", true, "E", false); // [B, C, D] - B शामिल, E नहीं
set.headSet("D", true);            // [A, B, C, D] - D तक
set.tailSet("C", false);           // [D, E, F] - C के बाद

// डिसेंडिंग व्यू
NavigableSet<String> descending = set.descendingSet(); // [F, E, D, C, B, A]
NavigableSet<String> descendingView = set.descendingSet(); // बैक्ड व्यू

कब उपयोग करें

  • सॉर्टेड डेटा में रेंज क्वेरी चाहिए
  • प्रीडीसेसर/सक्सेसर खोजने हैं
  • फ्लोर/सीलिंग ऑपरेशन्स चाहिए
  • रिवर्स ऑर्डर इटरेशन चाहिए

ऐप चलाएं

नाम जोड़ें - वे अल्फाबेटिक क्रम में दिखेंगे। Toast में पहला/अंतिम एलिमेंट और साइज दिखेगा।

एंड्रॉइड में NavigableSet इंटरफेस का उपयोग कैसे करें?

  1. Android में ArrayBlockingQueue कैसे उपयोग करें? Android में ArrayBlockingQueue कैसे उपयोग करें?

    ArrayBlockingQueue बेसिक उपयोग - थ्रेड-सेफ बाउंडेड क्यू ArrayBlockingQueue एक निश्चित आकार का, FIFO, ब्लॉकिंग क्यू है जो ऐरे द्वारा समर्थित है। प्रोड्यूसर-कंज्यूमर पैटर्न के लिए आदर्श। चरण 1: प्रोजेक्ट बनाएं Android Studio: File → New Project। चरण 2: लेआउट (activity_main.xml) <?xml version=1.0

  1. Android में CopyOnWriteArrayList का उपयोग कैसे करें? Android में CopyOnWriteArrayList का उपयोग कैसे करें?

    CopyOnWriteArrayList क्या है? CopyOnWriteArrayList ArrayList का एक थ्रेड-सेफ (thread-safe) संस्करण है। यह अंतर्निहित सरणी (underlying array) की एक नई कॉपी बनाकर add, set जैसे ऑपरेशन करता है। इसका मतलब है कि जब भी सूची में कोई बदलाव होता है, तो एक नई सरणी बनाई जाती है, जिससे पढ़ने वाले थ्रेड्स को लॉ

  1. एंड्रॉइड टीवी पर ADB सेट अप और उपयोग कैसे करें एंड्रॉइड टीवी पर ADB सेट अप और उपयोग कैसे करें

    चाहे आपके पास एंड्रॉइड स्मार्टफोन हो या एंड्रॉइड टीवी, ऑपरेटिंग सिस्टम की प्रकृति समान रहती है। दूसरे शब्दों में, एक एंड्रॉइड टीवी किसी भी अन्य एंड्रॉइड डिवाइस की तरह ही ट्वीक करने योग्य है। यदि आप कुछ गंभीर ट्वीक करने की योजना बना रहे हैं जैसे एंड्रॉइड ऐप साइडलोड करना, तो आपको एंड्रॉइड डिबग ब्रिज,