简体   繁体   English

在列表中使用 Java 中的 lambda 查找 lenghtOfArgument

[英]In list find lenghtOfArgument with lambda in Java

In my taks I need to find size() of argument and for every object print size.在我的任务中,我需要找到参数的 size() 以及每个对象的打印尺寸。 Object of type Car are in Set(so this maybe should help) Car 类型的对象在 Set 中(所以这可能会有所帮助)

I did this:我这样做了:

List<Integer> numberOf = cars
.stream
.map(car->car.getNumbers().size())
.collect(Collectors.toList());

System.out.println(numberOf);

Output is : [1,1,1,1]输出为:[1,1,1,1]

I need output like this:我需要这样的输出:

Audi - 1 Bmw - 1 Porsche - 1 Bentley - 1奥迪 - 1 宝马 - 1 保时捷 - 1 宾利 - 1

If I go with如果我去

for(Car c: cars)
sout(c.getName + numberOf)

It gets me Audi [1,1,1,1] Bmw[1,1,1,1]etc.它让我得到了奥迪 [1,1,1,1] 宝马 [1,1,1,1] 等。

How to properly print all those values.如何正确打印所有这些值。 I also tried to Override method toString in class car but I also get the same output.我还尝试在类 car 中覆盖方法 toString 但我也得到相同的输出。

Edit: Class Car编辑:类车

public Car(String name, List<Colours> colours)
super(name);
this.colours= colours;

The simplest solution is:最简单的解决方案是:

    cars.forEach(car -> 
            System.out.println(car.getName() + " - " + car.getNumbers().size()));

Grouping by name:按名称分组:

import java.util.stream.Collectors;

import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;


Collection<Car> cars = ...// your cars
final Map<String, Long> grouped = 
    cars.stream()
        .collect(groupingBy(car -> car.getName(), counting()));
System.out.println(grouped);

If you want output like "name - number", perhaps generate strings:如果你想要像“姓名 - 数字”这样的输出,也许会生成字符串:

List<String> combined = cars
.stream
.map(car->car.getName + " - " + car.getNumbers().size())
.collect(Collectors.toList());

System.out.println(combined);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM