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 आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और परिणाम देखें।

परिणाम: [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()का भी उपयोग कर सकते हैं