जांचें कि क्या ArrayList में कोई मान मौजूद है


179

मैं कैसे जांच सकता हूं कि स्कैनर में लिखा गया मान किसी में मौजूद है या नहीं ArrayList?

List<CurrentAccount> lista = new ArrayList<CurrentAccount>();

CurrentAccount conta1 = new CurrentAccount("Alberto Carlos", 1052);
CurrentAccount conta2 = new CurrentAccount("Pedro Fonseca", 30);
CurrentAccount conta3 = new CurrentAccount("Ricardo Vitor", 1534);
CurrentAccount conta4 = new CurrentAccount("João Lopes", 3135);

lista.add(conta1);
lista.add(conta2);
lista.add(conta3);
lista.add(conta4);

Collections.sort(lista);

System.out.printf("Bank Accounts:" + "%n");
Iterator<CurrentAccount> itr = lista.iterator();
while (itr.hasNext()) {
    CurrentAccount element = itr.next();
    System.out.printf(element + " " + "%n");
}
System.out.println();

1
जावा 8 समाधान: stackoverflow.com/a/51837794/1216775
akhil_mittal

जवाबों:


320

बस ArrayList.contains (वांछित) का उपयोग करें । उदाहरण के लिए, यदि आप अपने उदाहरण से conta1 खाते की तलाश कर रहे हैं, तो आप कुछ इस तरह का उपयोग कर सकते हैं:

if (lista.contains(conta1)) {
    System.out.println("Account found");
} else {
    System.out.println("Account not found");
}

संपादित करें: ध्यान दें कि इसके लिए काम करने के लिए, आपको बराबर () और हैशकोड () विधियों को ठीक से ओवरराइड करना होगा । यदि आप ग्रहण आईडीई का उपयोग कर रहे हैं, तो आप इन तरीकों को अपनी CurrentAccountवस्तु और चयन के लिए स्रोत फ़ाइल खोलकर उत्पन्न कर सकते हैंSource > Generate hashCode() and equals()...


9
समतुल्य () विधि CurrentAccount में निर्धारित की जानी चाहिए जब वे समान वस्तु हों
Javi

3
उस मामले में हैशकोड () को भी ओवरराइड करने की आवश्यकता है। हैशकोड () अनुबंध के बराबर वस्तुओं में समान हैशकोड होना चाहिए।
जॉकमैन

@ ज़ॉकमैन सुनिश्चित करें कि आप सही हैं, हालांकि मुझे लगता है कि इस मामले में बराबरी से आगे निकलना और भी महत्वपूर्ण है क्योंकि यदि करंटअकाउंट ऑब्जेक्ट नहीं भी हो सकता है तब भी जब उनकी सभी विशेषताओं का समान मूल्य हो। लेकिन मैं हैशकोड () भी ओवरराइड करने में सहमत हूं।
जवाई

क्या कोई संस्करण है जो ऑब्जेक्ट रेफ़रेंस की तुलना करता है?
टॉम ज़ातो -

नमस्ते, क्या सूची की जांच करना संभव है यदि इसमें "अल्बर्टो कार्लोस" शामिल है?
जेसी

47

जब आप किसी मूल्य के अस्तित्व के लिए जाँच कर रहे हों HashSet, ArrayListतब उपयोग करने से बेहतर है । जावा डॉक्स HashSetकहता है:"This class offers constant time performance for the basic operations (add, remove, contains and size)"

ArrayList.contains() आपके द्वारा खोजे जा रहे उदाहरण को खोजने के लिए पूरी सूची को पुनरावृत्त करना पड़ सकता है।


16

कृपया इस पोस्ट पर मेरे उत्तर का संदर्भ लें ।

Listकेवल equalsविधि को अधिलेखित करने पर पुनरावृत्ति करने की आवश्यकता नहीं है ।

के equalsबजाय का उपयोग करें==

@Override
public boolean equals (Object object) {
    boolean result = false;
    if (object == null || object.getClass() != getClass()) {
        result = false;
    } else {
        EmployeeModel employee = (EmployeeModel) object;
        if (this.name.equals(employee.getName()) && this.designation.equals(employee.getDesignation())   && this.age == employee.getAge()) {
            result = true;
        }
    }
    return result;
}

इसे इस तरह से कॉल करें:

public static void main(String args[]) {

    EmployeeModel first = new EmployeeModel("Sameer", "Developer", 25);
    EmployeeModel second = new EmployeeModel("Jon", "Manager", 30);
    EmployeeModel third = new EmployeeModel("Priyanka", "Tester", 24);

    List<EmployeeModel> employeeList = new ArrayList<EmployeeModel>();
    employeeList.add(first);
    employeeList.add(second);
    employeeList.add(third);

    EmployeeModel checkUserOne = new EmployeeModel("Sameer", "Developer", 25);
    System.out.println("Check checkUserOne is in list or not");
    System.out.println("Is checkUserOne Preasent = ? " + employeeList.contains(checkUserOne));

    EmployeeModel checkUserTwo = new EmployeeModel("Tim", "Tester", 24);
    System.out.println("Check checkUserTwo is in list or not");
    System.out.println("Is checkUserTwo Preasent = ? " + employeeList.contains(checkUserTwo));

}

4
स्ट्रिंग्स की तुलना करने के लिए आप == का उपयोग कर रहे हैं
माइटियन

2
तार की तुलना करने के लिए आपको == के बजाय बराबर () का उपयोग करना चाहिएthis.name.equals(employee.getName())
लकी

1
मेरे जीवन को बचाया। आप एक बीयर या दो आरएन खरीदिए :)
केनेडी कम्बो

10

हम यह containsजांचने के लिए विधि का उपयोग कर सकते हैं कि क्या कोई वस्तु मौजूद है यदि हमने कार्यान्वयन प्रदान किया है equalsऔर hashCodeसमानता तुलना के लिए वस्तु संदर्भ का उपयोग किया जाएगा। इसके अलावा एक सूची के मामले में containsहै O(n)आपरेशन के रूप में यह वह जगह है जहाँ O(1)के लिए HashSetतो बेहतर बाद में उपयोग करने के लिए। जावा 8 में हम स्ट्रीम का उपयोग उसकी समानता के आधार पर या किसी विशिष्ट गुण के आधार पर आइटम की जांच करने के लिए भी कर सकते हैं।

जावा 8

CurrentAccount conta5 = new CurrentAccount("João Lopes", 3135);
boolean itemExists = lista.stream().anyMatch(c -> c.equals(conta5)); //provided equals and hashcode overridden
System.out.println(itemExists); // true

String nameToMatch = "Ricardo Vitor";
boolean itemExistsBasedOnProp = lista.stream().map(CurrentAccount::getName).anyMatch(nameToMatch::equals);
System.out.println(itemExistsBasedOnProp); //true

वास्तव में यह एक +1 है इस अद्भुत जवाब के लिए धन्यवाद! मैंने कोड के इस भाग का उपयोग किया है: boolean itemExistsBasedOnProp = selectedR.stream().map(Request::getDesc).anyMatch(cn::equals);अब मुझे उस वस्तु को निकालने की आवश्यकता है! क्या यह संभव है ??
मैरीम नाइलि

1
@ मैरीमेनिली का उपयोग करें findAny: docs.oracle.com/javase/8/docs/api/java/util/stream/…
akhil_mittal

कॉल के लिए एपीआई स्तर 24 (वर्तमान मिनट 19 है) की आवश्यकता है:java.util.Collection#stream
शिरीन

2

बस उपयोग करें .contains। उदाहरण के लिए, यदि आप चेक कर रहे थे कि क्या किसी ArrayList arrमें कोई मान है या नहीं val, तो आप बस चलाएंगे arr.contains(val), जो मान होने पर एक बूलियन का प्रतिनिधित्व करता है। अधिक जानकारी के लिए, डॉक्स के लिए .contains


1

जब एरे लिस्ट में आदिम डेटाटेप का ऑब्जेक्ट होता है।

Use this function:
arrayList.contains(value);

if list contains that value then it will return true else false.

जब Array List में UserDefined DataType का Object होता है।

Follow this below Link 

ArrayList में ऑब्जेक्ट्स विशेषताओं की तुलना कैसे करें?

मुझे उम्मीद है कि यह समाधान आपकी मदद करेगा। धन्यवाद


1
public static void linktest()
{
    System.setProperty("webdriver.chrome.driver","C://Users//WDSI//Downloads/chromedriver.exe");
    driver=new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("http://toolsqa.wpengine.com/");
    //List<WebElement> allLinkElements=(List<WebElement>) driver.findElement(By.xpath("//a"));
    //int linkcount=allLinkElements.size();
    //System.out.println(linkcount);
    List<WebElement> link = driver.findElements(By.tagName("a"));
    String data="HOME";
    int linkcount=link.size();
    System.out.println(linkcount);
    for(int i=0;i<link.size();i++) { 
        if(link.get(i).getText().contains(data)) {
            System.out.println("true");         
        }
    } 
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.