Android ListView में बाइनरी सर्च (binarySearch) करना
यह उदाहरण दर्शाता है कि Android ListView में Collections.binarySearch() विधि का उपयोग करके बाइनरी सर्च कैसे किया जाता है। बाइनरी सर्च के लिए List का सॉर्टेड होना आवश्यक है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2: लेआउट फ़ाइल (activity_main.xml) कॉन्फ़िगर करें
res/layout/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"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:hint="नाम दर्ज करें"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/save"
android:text="सेव करें"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/refresh"
android:text="रिफ्रेश"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
उपरोक्त कोड में, हमने नाम के लिए EditText लिया है। जब उपयोगकर्ता सेव बटन पर क्लिक करता है, तो डेटा ArrayList में स्टोर हो जाता है। रिफ्रेश बटन पर क्लिक करके ListView में परिवर्तन देखे जा सकते हैं।
चरण 3: MainActivity.java में कोड जोड़ें
package com.example.andy.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.Collections;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
EditText name;
ArrayAdapter<String> arrayAdapter;
ArrayList<String> array_list;
Set<String> set = new HashSet<>();
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
array_list = new ArrayList<>();
array_list.ensureCapacity(20);
name = findViewById(R.id.name);
listView = findViewById(R.id.listView);
findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (arrayAdapter != null) {
arrayAdapter.notifyDataSetChanged();
listView.invalidateViews();
listView.refreshDrawableState();
}
}
});
findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!name.getText().toString().isEmpty()) {
set.add(name.getText().toString());
array_list.clear();
if (array_list.isEmpty()) {
array_list.addAll(set);
// बाइनरी सर्च का उपयोग करके 'sairam' ढूंढें
int index = Collections.binarySearch(array_list, "sairam");
if (index >= 0) {
// यदि मिल जाए तो सभी एलिमेंट्स को 'sairam' से भर दें
Collections.fill(array_list, "sairam");
}
array_list.trimToSize();
arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
listView.setAdapter(arrayAdapter);
} else {
listView.setVisibility(View.GONE);
}
Toast.makeText(MainActivity.this, "इन्सर्ट किया गया", Toast.LENGTH_LONG).show();
} else {
name.setError("नाम दर्ज करें");
}
}
});
}
}
एप्लिकेशन चलाएं
अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फ़ाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और डिवाइस पर डिफ़ॉल्ट स्क्रीन देखें।

अब हम नाम के रूप में 'sairam' इन्सर्ट कर रहे हैं क्योंकि हम ArrayList से 'sairam' स्ट्रिंग को बाइनरी सर्च का उपयोग करके खोज रहे हैं। यह नीचे दिखाए अनुसार सभी मानों को 'sairam' से बदल देगा:

नोट: Collections.binarySearch() के लिए List का सॉर्टेड होना आवश्यक है। इस उदाहरण में Set का उपयोग किया गया है जो स्वाभाविक रूप से सॉर्टेड नहीं होता, इसलिए परिणाम अप्रत्याशित हो सकते हैं। उत्पादन कोड में बाइनरी सर्च से पहले Collections.sort() का उपयोग करें।