【发布时间】:2019-10-12 05:07:32
【问题描述】:
CircuitID Department Hours
--------------------------------
Circuit A Electricity 60
Circuit A Hydel 70
Circuit B Hydel 30
Circuit C Electricity 40
Circuit B Electricity 80
Circuit C Hydel 50
Circuit A Electricity 70
现在我必须创建一个包含以下条件记录的列表:
- 在每个电路 ID 中,我需要获取最高小时数的记录,但如果存在重复的小时数,我需要使用电力部门的记录。
上述结果的结果应如下所示:
Circuit A Electricity 70
Circuit B Electricity 80
Circuit C Hydel 50
让我知道如何使用 java 8/java 以最有效的方式进行有效迭代以获取最终列表。
我写的代码一点也不完美,我的方法如下所示:
for (int i = 0; i < circuitList.size(); i++) {
for (int j = 0; j < circuitList.size(); {
if (circuitList.get(i).getCircuitId().equals(circuitList.get(j).getCircuitId()) && i != j) {
if (circuitList().get(i).getHours() == circuitList().get(j).getHours()) {
if (circuitList().get(i).getDepartment().equals(“Electricity”) {
newList.add(circuitList().get(i));
}
// some more conditions on getHours
Circuit 类的 pojo 对象具有这三个对象的 getter setter。
public class Circuit {
String circuitID;
int hours;
String department;
}
【问题讨论】:
-
请展示
Circuit类的样子。此外,如果您更正诸如getCircuitId、getCircuitId()、“Electricity”、circuitList()之类的拼写错误以及缩进和右大括号,那就太好了 -
按电路使用
groupingBy到collect。使用maxBy的下游,收集器先按小时排序,然后按类型排序。
标签: java list collections java-8