Arraylists及其各种功能

时间:2016-02-04 05:29:14

标签: java arraylist

package com.example; 
import java.util.ArrayList; 
import java.util.List;  

public class example {     
   public static void main(String[] args) {          
        Employee e1 = new Employee("Jeny", 22, "Chennai");         
        Employee e2 = new Employee("Justin", 22, "Mumbai");         
        Employee e3 = new Employee("Esha", 22, "Pune");         
        Employee e4 = new Employee("Saumya", 22, "Trichur");          

       List<Employee> al = new ArrayList<>();         
       al.add(e1);         
       al.add(e2);         
       al.add(e3);         
       al.add(e4);

       System.out.println(al);
   }
}

大家好我不熟悉java编码和堆栈溢出。这只是我正在尝试的事情。我试图了解如何使用contains方法来了解元素“Jeny”或任何其他元素是否包含在内。我不知道包含方法是否是唯一的方法。但它是我此刻一直在努力的。请帮忙。

3 个答案:

答案 0 :(得分:1)

如果我的问题正确无误,那么您正在寻找一种方法,该方法可以采用任何一个参数(名称/年龄/城市),并告诉您是否存在具有匹配属性的员工。为此,您不能使用ArratList.contains()方法,因为包含内部使用equals()方法(根据需要实现),该方法必须采用与集合中的元素类型相同的对象(此处为数组列表)。更多on this java doc about contains()

您的方案的可能解决方案是,定义您自己的迭代ArrayList的方法,如果List中Employee的任何一个属性存在,则返回true。

答案 1 :(得分:0)

您还可以使用 Java 8 流及其不同的方法 像

List<Employee> employees =new ArrayList<>();
String name="John";         
if(employees.stream().anyMatch(e->e.getName().equals(name)))
{
  System.out.println("Exists");
}

您可以使用

employees.stream().allMatch(yourPredicat);

答案 2 :(得分:0)

List的contains方法使用对象中的equals方法进行评估。

因此,如果您希望根据名称字段评估您的Employee方法。 您必须在Employee类中实现equals和hashcode方法,如下所示。

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }

    Employee other= (Employee)obj;
    if (!this.name.equals(other.name)) {
        return false;
    }

    return true;

}

@Override
public int hashCode() {
    //your hashcode logic goes here
}   

现在您可以使用contains来检查匹配的对象。例如,见下面的代码。

 Employee e5 = new Employee("Jeny", 21, "abc"); 

   if(al.contains(e5)){
       System.out.println("List contains Employee with name:"+e5.getName());
   }

现在这将打印

List contains Employee with name:Jeny

您可以根据需要修改equals方法。