gpt4 book ai didi

java - 如何在foreach循环java中返回具有特定字段(函数?)最小值的对象

转载 作者:行者123 更新时间:2023-11-29 07:24:55 26 4
gpt4 key购买 nike

我正在尝试从 for-each 循环中获取对象“Employee”的最小值。

我创建了一些员工;

// Create Employees
Employee Employee1 = new Employee(1, "Bradley", 0);
Employee Employee2 = new Employee(2, "Patrick", 0);
Employee Employee3 = new Employee(3, "Erin", 0);
Employee Employee4 = new Employee(4, "Jim", 0);
Employee Employee5 = new Employee(5, "Fredrick", 0);

第三个参数是分配合约的数量,默认为0。然后我的代码分配一些契约(Contract),分配的契约(Contract)数量增加等。然后我像这样从上面的员工中创建一个数组;

Employee[] employees = new Employee[] {Employee1, Employee2, Employee3, Employee4, Employee5};

我可以使用下面的循环打印分配给每个员工的契约(Contract)数量;

for (Employee employee : employees) {
System.out.println(employee.numberOfCurrentlyAssignedContracts);
}

我试图返回具有最少数量的 employee.numberOfCurrentlyAssignedContracts 的员工,而不是返回它的 int 值,我希望返回整个员工对象,这样我就可以调用一个单独的函数,例如:

employee(with smallest value of assigned contracts).assignContract - 将新契约(Contract)分配给当前分配契约(Contract)数量最少的员工。所以基本上,我如何让 for-each 返回员工而不是分配契约(Contract)的 int 值?

如有任何帮助,我们将不胜感激。

问候,B


如果提交的三个答案都有效,我该怎么办?!谢谢。此外,如果 2+ 具有相同的最小值,我怎么能随机返回一名员工,例如,2 名员工都是 0 分配的契约(Contract)..

最佳答案

您可以使用简单的 for 循环来查找契约(Contract)数量最少的员工,如下所示:

int minContract = Integer.MAX_VALUE;
Employee empMin = null;
for (Employee employee : employees) {
if (employee.getNumberOfCurrentlyAssignedContracts() < minContract) {
// swap min and employee if true
empMin = employee;
minContract = empMin.getNumberOfCurrentlyAssignedContracts();
}
}

现在您有对具有最低契约(Contract)的雇员对象的引用:

System.out.println(empMin);

如果您使用的是 java-8,那么您可以简单地执行以下操作:

Employee empMin = Arrays.stream(employees)
.min((e1, e2) ->
e1.getNumberOfCurrentlyAssignedContracts() -
e2.getNumberOfCurrentlyAssignedContracts())
.get();

关于java - 如何在foreach循环java中返回具有特定字段(函数?)最小值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com