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”或任何其他元素是否包含在内。我不知道包含方法是否是唯一的方法。但它是我此刻一直在努力的。请帮忙。
答案 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方法。