Prz*_*mek 5 java java-8 java-stream
我有 2 个 Java 类。一个是由 5 个变量组成的 Car 类。其中我有一个List设备变量。另一个类包含 Car 类对象的列表:List carlist。
我的任务是:我必须根据给定汽车拥有的设备项目的数量使用 Java 中的 Streams 对汽车对象列表进行排序。
我怎么做?我试图构建一个单独的方法来计算对象列表中的项目 - 但是在比较器中,我无法将对象作为此方法的参数。
这是我的代码的摘录:
private int countEquipmentItems (Car s){
if (s == null){
return 0;
}
int countEquipment = 0;
List<String> a = s.getEquipment();
for (int i = 0; i <a.size() ; i++) {
countEquipment ++;
}
return countEquipment;
}
Run Code Online (Sandbox Code Playgroud)
我尝试在 Stream 中使用此方法:
public void sortbyEquipment (List<Car> carList){
carList.stream()
.sorted(Comparator.comparing(countEquipmentItems(Car s)));
}
}
Run Code Online (Sandbox Code Playgroud)
我感谢任何帮助
你不需要那种countEquipmentItems方法来计算设备的数量。只需使用car.getEquipment().size():
public void sortbyEquipment (List<Car> carList){
carList.stream()
.sorted(Comparator.comparing(car -> car.getEquipment().size()))
...
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以将其Comparator直接传递给Collections.sort(),这将对列表进行排序,而无需创建Stream.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |