Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在LambdaJ中创建值为集合的映射?_Java_Lambdaj - Fatal编程技术网

Java 如何在LambdaJ中创建值为集合的映射?

Java 如何在LambdaJ中创建值为集合的映射?,java,lambdaj,Java,Lambdaj,我知道如何制作Map,但是如何在lambdaj中制作Map 这是我想用LambdaJ编写的代码: Map<String, List<Car>> driverCarsMap = new HashMap<String, List<Car>>(); for (Car car : cars) { String driver = car.getDriver(); if (!driverCarsMap.containsKey(driver))

我知道如何制作
Map
,但是如何在lambdaj中制作
Map

这是我想用LambdaJ编写的代码:

Map<String, List<Car>> driverCarsMap = new HashMap<String, List<Car>>();
for (Car car : cars)
{
    String driver = car.getDriver();
    if (!driverCarsMap.containsKey(driver))
            driverCarsMap.put(driver, new ArrayList<Car>());

    driverCarsMap.get(driver).add(car);
}
Map driverCarsMap=newhashmap();
用于(汽车:汽车)
{
字符串driver=car.getDriver();
如果(!driverCarsMap.containsKey(驱动程序))
put(driver,new ArrayList());
driverCarsMap.get(driver.add(car));
}
不幸的是,代码:

Map<String, List<Car>> driverCarsMap = index(cars, on(Car.class).getDriver());
Map driverCarsMap=index(cars,on(Car.class).getDriver());

创建贴图,但值不会被扩展,而是被覆盖。因此,事实上我们注意到,我们有一个列表,但只有一个对象。

您想要做的类似于LambdaJindex方法。索引的问题在于它的局限性,它的文档中说:

在许多情况下,前面的索引功能已经足够了,但至少有 两大限制:如果有两个或多个对象,它不会管理冲突 应该在同一个键值上建立索引,并且不容易允许 为多级层次结构中的对象编制索引

为了克服这些限制,lambdaj提供了一个 (可选分层)根据对象的值对对象进行分组 财产。与往常一样,lambdaj中首选的(静态类型)方式 选择对象的属性是通过on构造进行的,因此要将 根据年龄列出的人员名单,只需填写:

Group Group=Group(meansmyfriends,by)(on(Person.class.getAge())

因此,您必须使用LambdaJ组。举个例子,它是:

Group<Car> group = group(cars, by(on(Car.class).getDriver()));
groupgroup=Group(cars,by)(on(Car.class).getDriver());
您可以在此处查看分组项目:

嗯,谢谢你的解释。好吧,看来我无法创建这样的地图。我需要的是地图,而不是组,因为已经存在的界面如果你想使用LambdaJ的代码,你张贴然后“组”是答案。但是,如果需要对组进行后处理,可以创建一个解析器对其进行转换。顺便说一句,如果你喜欢函数方法,你可以使用番石榴函数和Collection2.transform