Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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
使用Java8遍历对象映射列表并获取项目的长度_Java_Lambda_Java 8_Functional Programming - Fatal编程技术网

使用Java8遍历对象映射列表并获取项目的长度

使用Java8遍历对象映射列表并获取项目的长度,java,lambda,java-8,functional-programming,Java,Lambda,Java 8,Functional Programming,我有一张物体的地图。我想使用Java8在地图中查找特定项目的长度 List<Map<Integer,String>> l = new ArrayList(); Map<Integer,String> m = new HashMap<>(); m.put(1,"Mark"); m.put(2,"Matthew"); l.add(m); public int getLength(int param){ //T

我有一张物体的地图。我想使用Java8在地图中查找特定项目的长度

List<Map<Integer,String>> l = new ArrayList();
Map<Integer,String> m = new HashMap<>();
m.put(1,"Mark");
m.put(2,"Matthew");
l.add(m);


public int getLength(int param){
//This Method needs to return the length of Matthew/Mark when being passed 1/2
//l.stream()
when getLength(2) is called it should return 7
}
listl=newarraylist();
Map m=新的HashMap();
m、 放置(1,“标记”);
m、 put(2,“马太”);
l、 加(m);
公共int getLength(int参数){
//当传递1/2时,此方法需要返回Matthew/Mark的长度
//l、 流()
调用getLength(2)时,它应该返回7
}

即使代码中存在一些问题,答案可能是:

public int getLength(String param, List<Map<Integer, String>> l) {
    return l.stream()
            .filter(e -> e.containsKey(param))
            .findFirst()
            .map(e -> e.get(param).length())
            .orElseThrow(() -> new IllegalArgumentException("Element not found!"));
}
public int getLength(字符串参数,列表l){
返回l.stream()
.过滤器(e->e.containsKey(参数))
.findFirst()
.map(e->e.get(param).length())
.orelsetrow(()->new IllegalArgumentException(“未找到元素!”);
}


您必须找到包含键
param
的映射,我猜您正在查找第一个值,然后您可以获取长度或引发异常(如果未找到元素),如果您想返回默认值,您可以将
orelsetrow
替换为
orElse

您不能将
Matthew
添加到列表中。然后分享一个确切的例子,你传递什么参数和返回什么值你所说的长度是什么意思?你是在寻找
l.stream().flatMap(e->e.values().stream()).filter(param::equals).count()@arzo..你说得对,我更新了代码。@YCF\u L No。。当我通过1或2时,它应该返回映射中相应值的长度。您如何从问题中得出
findfirst
行为?@Naman OP确认这一点