我有一个Employee类对象的arraylist。每个员工都有id、fname、lname等。我需要获取员工id所在元素的索引,例如1234521953。如何找到员工所在的索引?每个身份证都是独一无二的这就是为什么我要通过身份证找到他。
public class Employee extends Person {
private String employerName;
private LocalDate employmentDate;
private LocalDate releaseDate;
private BigDecimal salary;
private String jobtitle;
}
这是我的班级成员:
public class Person {
public long getId() {
return id;
}
private long id;
private String fname;
private String lname;
private String addressLine;
private LocalDate birthDate;
}
我将它们添加到:
List<Employee> employeesAL = new ArrayList<>();
现代的方法是使用streams API:
public Optional<Employee> getEmployee(String id) {
Optional<Employee> employee = employeesAL.stream()
.filter(employee -> id.equals(employee.getId()))
.findAny();
return employee;
}
此方法返回可选
你可以这样写:
public Employee getEmployee(String id) {
for (Employee employee : employees) {
if (employee.getId().equals(id)) {
return employee;
}
}
return null;
}
但是如果列表中有很多员工,它会很慢,因为它会迭代列表。如果您想通过ID快速查找员工,我建议您使用以员工为值的id键控的Map(例如HashMap
)。
另一种选择是确保列表中的Employee
对象按id顺序保存。然后可以对列表进行二进制搜索,以找到具有特定id的员工。
如果您已经实现了。equals
方法在Employee
类中,您可以将其传递给。indexOf()
List<Employee> l = new ArrayList<>();
Employee e = new Employee("ID123");
int idx = l.indexOf(e);
由于ID
是唯一的,因此不需要检查中的所有字段。equals()
方法,只需检查ID
:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
return id == employee.id;
}
或者自己实现,使用indexOf
的相同逻辑
int idx = -1;
for (int i = 0; i < l.size(); i++) {
if (e.getId() == l.get(i).getId()) {
idx = i;
break;
}
}
目前我正在做一项与多边形相关的工作。多边形可以描述为几个顶点。 现在,我有一些多边形已经矢量 一种方法可以告诉我,一个点在哪个多边形内 我需要设置返回的多边形的颜色。 我的第一个问题是如何知道返回的多边形是否在向量内 我的第一个想法是使用无序的集合和比较(vertex.begin(),vertex)。end())。我不知道是否有更好的主意。 另一个问题是某些多边形可能包含相同的边。如何设计数据结构
问题内容: 使用示例: 假设我有一个课堂电话。我还有另一个上课电话。 类的ArrayList为。 要遍历.. 的Arraylist而不是这样做: 我们可以像这样简单地遍历ArrayList : 现在,我要迭代并打印出所有第3个对象: 现在我的问题是: 与使用常规的for循环不同,我如何使用ArrayList迭代打印出枪支对象列表? 问题答案: 您要遵循与以前相同的模式: 在这种情况下,它将是:
问题内容: 我研究过Java是按值传递对象引用,并且为了创建对象的本地副本,我可以执行clone()或copy-constructor。我还查看了深/浅副本以及关于stackoverflow的几篇文章。 现在我看一个例子: 我只读过几篇文章提到ArrayList实现可克隆,但是并没有真正说出如果类型为List而不是不实现可克隆的ArrayList,那么如何制作“列表”的本地副本。 如果“列表”是A
我有对象列表。 每个项目有1个arrayList Item.propertylist.key.equals(“test”)作为新列表。
我试图将元素添加到中,我使用下面的代码,但它显示语法错误。有人能帮我吗?
我怎么能找到一个对象,,在