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

Android में अनसॉर्टेड लिंक्ड लिस्ट से डुप्लिकेट कैसे हटाएं?

Android में अनसॉर्टेड लिंक्ड लिस्ट से डुप्लिकेट हटाना

यह उदाहरण दर्शाता है कि Android में अनसॉर्टेड (अक्रमित) लिंक्ड लिस्ट से डुप्लिकेट मान कैसे हटाए जाते हैं।

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

Android Studio में File → New Project पर जाएं और आवश्यक विवरण भरकर एक नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट XML में कोड जोड़ें

res/layout/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:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

उपरोक्त कोड में, हमने डुप्लिकेट के बिना मान दिखाने के लिए TextView लिया है।

चरण 3: MainActivity.java में कोड जोड़ें

package com.example.myapplication;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.util.HashSet;
import java.util.LinkedList;

public class MainActivity extends AppCompatActivity {
    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.add(2);
        linkedList.add(8);
        linkedList.add(2);
        linkedList.add(5);
        linkedList.add(7);
        linkedList.add(5);
        linkedList.add(9);

        // HashSet - डुप्लिकेट हटाता है (ऑर्डर गारंटी नहीं)
        HashSet<Integer> hashSet = new HashSet<>(linkedList);

        TextView textView = findViewById(R.id.text);
        textView.setText("डुप्लिकेट के बिना: " + hashSet.toString());
    }
}

एप्लिकेशन चलाएं

अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और परिणाम देखें।

Android में अनसॉर्टेड लिंक्ड लिस्ट से डुप्लिकेट कैसे हटाएं?

परिणाम: [2, 5, 7, 8, 9] - डुप्लिकेट हटाए गए (ऑर्डर बदल सकता है क्योंकि HashSet ऑर्डर गारंटी नहीं देता)।

अनसॉर्टेड लिस्ट से डुप्लिकेट हटाने के तरीके

1. HashSet - सबसे सरल (ऑर्डर नहीं रखता)

LinkedList<Integer> list = new LinkedList<>();
// ... एलिमेंट्स जोड़ें
HashSet<Integer> set = new HashSet<>(list);
list.clear();
list.addAll(set); // ऑर्डर बदल सकता है

2. LinkedHashSet - ऑर्डर बनाए रखता है

LinkedHashSet<Integer> set = new LinkedHashSet<>(list);
list.clear();
list.addAll(set); // इंसर्शन ऑर्डर बना रहता है

3. मैन्युअल तरीका (बिना Extra Space के - O(n²))

public static void removeDuplicatesManual(LinkedList<Integer> list) {
    for (int i = 0; i < list.size(); i++) {
        Integer current = list.get(i);
        // बाकी लिस्ट में डुप्लिकेट खोजें
        for (int j = i + 1; j < list.size(); j++) {
            if (current.equals(list.get(j))) {
                list.remove(j);
                j--; // इंडेक्स एडजस्ट करें
            }
        }
    }
}

4. HashSet के साथ सिंगल पास (O(n) समय, O(n) स्पेस)

public static void removeDuplicatesOptimized(LinkedList<Integer> list) {
    Set<Integer> seen = new HashSet<>();
    Iterator<Integer> iterator = list.iterator();
    
    while (iterator.hasNext()) {
        Integer current = iterator.next();
        if (seen.contains(current)) {
            iterator.remove(); // डुप्लिकेट हटाएं
        } else {
            seen.add(current);
        }
    }
}

तुलना

तरीका समय स्पेस ऑर्डर
HashSet O(n) O(n) नहीं
LinkedHashSet O(n) O(n) हाँ
मैन्युअल (नेस्टेड लूप) O(n²) O(1) हाँ
HashSet + Iterator O(n) O(n) हाँ

मुख्य बिंदु

  • LinkedHashSet बेस्ट है जब ऑर्डर बनाए रखना हो
  • HashSet तेज है लेकिन ऑर्डर नहीं रखता
  • इंटरव्यू में HashSet + Iterator तरीका अक्सर पूछा जाता है
  • बिना एक्स्ट्रा स्पेस के O(n²) तरीका भी पूछा जाता है
  • Java 8+ में stream().distinct() का भी उपयोग कर सकते हैं
  1. Android में प्रोग्रामेटिकली नोटिफिकेशन बार से नोटिफिकेशन कैसे हटाएं? Android में प्रोग्रामेटिकली नोटिफिकेशन बार से नोटिफिकेशन कैसे हटाएं?

    Android में प्रोग्रामेटिकली नोटिफिकेशन बार से नोटिफिकेशन हटाना यह उदाहरण दर्शाता है कि Android में प्रोग्रामेटिकली नोटिफिकेशन बार से नोटिफिकेशन कैसे हटाया जाता है। चरण 1 - नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 -

  1. एंड्रॉइड से मैलवेयर कैसे हटाएं? एंड्रॉइड से मैलवेयर कैसे हटाएं?

    परिचय स्मार्टफोन में बैंकिंग ऐप्स, व्यक्तिगत डेटा, स्थान इतिहास आदि संवेदनशील जानकारी होती है। एंड्रॉइड डिवाइस भी कंप्यूटर की तरह मैलवेयर (वायरस, ट्रोजन, स्पायवेयर, एडवेयर, रैंसमवेयर) से संक्रमित हो सकते हैं। मैलवेयर कैसे प्रवेश करता है? असुरक्षित स्रोतों/थर्ड-पार्टी ऐप स्टोर्स से ऐप इंस्टॉल करना

  1. अपने एंड्रॉइड फोन से वायरस सुरक्षित रूप से हटाने के लिए चरण-दर-चरण गाइड अपने एंड्रॉइड फोन से वायरस सुरक्षित रूप से हटाने के लिए चरण-दर-चरण गाइड

    जैसे-जैसे एंड्रॉइड उपयोगकर्ताओं की संख्या वर्षों में बढ़ी है, विंडोज पर कभी विशेष रूप से उपलब्ध सुविधाओं ने अब स्मार्टफोन्स के छोटे ब्रह्मांड में अपनी जगह बना ली है। जबकि इसने हमें इंटरनेट और ऑनलाइन एप्लिकेशन्स तक त्वरित पहुंच जैसी क्रांतिकारी सुविधाएं दी हैं, इसने वायरस और मैलवेयर के लिए रास्ता खोल