অ্যারেলিস্টে কোনও মান বিদ্যমান কিনা তা পরীক্ষা করুন


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

কেবল অ্যারেলিস্ট.কন্টেইনস (কাঙ্ক্ষিত উপাদান) ব্যবহার করুন । উদাহরণস্বরূপ, আপনি যদি নিজের উদাহরণ থেকে conta1 অ্যাকাউন্টটি সন্ধান করছেন তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন:

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

সম্পাদনা: নোট করুন যে এটি কাজ করার জন্য আপনাকে সমান () এবং হ্যাশকোড () পদ্ধতিগুলি যথাযথভাবে ওভাররাইড করতে হবে । আপনি যদি Eclipse IDE ব্যবহার করে থাকেন তবে প্রথমে আপনার CurrentAccountঅবজেক্টের জন্য উত্স ফাইলটি খোলার মাধ্যমে এবং নির্বাচন করে এই পদ্ধতিগুলি তৈরি করা যেতে পারেSource > Generate hashCode() and equals()...


9
সমান () পদ্ধতির কারেন্টঅ্যাকউন্টে ওভাররাইড করা উচিত যখন তারা একই বস্তু হয় তা নির্ধারণ করতে
জাভি

3
সেক্ষেত্রে হ্যাশকোড () এরও ওভাররাইড করা দরকার। প্রতি হ্যাশকোড () চুক্তির সমান অবজেক্টগুলিতে সমান হ্যাশকোড থাকতে হবে।
zockman

@ জোকম্যান নিশ্চিত যে আপনি ঠিক আছেন, যদিও আমি মনে করি এই ক্ষেত্রে ওভাররাইডিং সমানগুলি আরও বেশি গুরুত্বপূর্ণ কারণ যদি কারেন্টএকাউন্ট না হয় তবে সমস্ত বৈশিষ্ট্যের একই মান থাকা সত্ত্বেও এটি একই নাও হতে পারে। তবে আমি হ্যাশকোড () কেও ওভাররাইডে সম্মত নই।
জাভি

এমন কোনও সংস্করণ আছে যা অবজেক্টের রেফারেন্সগুলির সাথে তুলনা করে?
টোমা জাটো - মনিকা

হাই, এটিতে "আলবার্তো কার্লোস" রয়েছে কিনা তালিকাটি পরীক্ষা করা সম্ভব?
জেসি

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
@maryemneyli ব্যবহার findAny: docs.oracle.com/javase/8/docs/api/java/util/stream/…
akhil_mittal

কলটির জন্য এপিআই স্তর 24 প্রয়োজন (বর্তমান মিনিট 19):java.util.Collection#stream
শিরিন

1

অ্যারে তালিকায় যখন আদিম ডেটা টাইপের অবজেক্ট থাকে।

Use this function:
arrayList.contains(value);

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

অ্যারে তালিকায় যখন ইউজারডিফাইন্ড ডেটা টাইপের অবজেক্ট থাকে।

Follow this below Link 

অ্যারেলিস্টে অবজেক্টস অ্যাট্রিবিউট কীভাবে তুলনা করবেন?

আমি আশা করি এই সমাধানটি আপনাকে সহায়তা করবে। ধন্যবাদ


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");         
        }
    } 
}

1

শুধু ব্যবহার .contains। উদাহরণস্বরূপ, যদি আপনি যাচাই করছিলেন যে অ্যারেলিস্টে arrকোনও মান রয়েছে কিনা val, আপনি কেবল চালাবেন arr.contains(val), যা মানটি অন্তর্ভুক্ত থাকলে প্রতিনিধিত্ব করে এমন একটি বুলিয়ান ফিরিয়ে দেবে। আরও তথ্যের জন্য ডকসটি দেখুন .contains

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.