String.valueOf(deptInfo.stream().filter(e -> String.valueOf(e.get("orgId")).equals(qybm)).map(e -> e.get("id")).findFirst().get())
时间: 2024-06-01 09:08:24 浏览: 107
这段代码的作用是从 deptInfo 这个 List<Map<String, Object>> 中找到 orgId 等于 qybm 的那个 Map,然后取出它的 id 字段,并将其转换成字符串返回。
具体来说,代码中的 filter() 方法会对 deptInfo 中的每一个 Map 进行过滤,只保留其中 orgId 字段等于 qybm 的那个 Map。接着,map() 方法会将这个 Map 转换成它的 id 字段,findFirst() 方法会从转换后的 Stream 中取出第一个元素(也就是唯一一个元素),最后用 String.valueOf() 方法将这个元素转换成字符串返回。如果在 deptInfo 中没有找到符合条件的 Map,或者找到的 Map 中没有 id 字段,那么代码会抛出 NoSuchElementException 异常。
相关问题
优化一下 String.valueOf(deptInfo.stream().filter(e -> String.valueOf(e.get("orgId")).equals(qybm)).map(e -> e.get("id")).findFirst().get())
可以使用 Optional 的 orElseThrow 方法,避免直接调用 get() 方法可能引发的 NoSuchElementException 异常。
具体代码如下:
```
deptInfo.stream()
.filter(e -> String.valueOf(e.get("orgId")).equals(qybm))
.map(e -> e.get("id"))
.findFirst()
.map(String::valueOf)
.orElseThrow(() -> new NoSuchElementException("未找到对应的部门信息"));
```
以上代码将首先筛选出 orgId 等于 qybm 的元素,并将它们的 id 属性映射为一个 Stream,然后在这个 Stream 上调用 findFirst() 方法,返回一个 Optional 类型的对象。接下来,我们可以利用 Optional 提供的方法进一步处理这个结果。在这里,我们使用 map() 方法将 id 属性的值转换为字符串类型,然后使用 orElseThrow() 方法,如果 Optional 对象为空则抛出 NoSuchElementException 异常。
]) ->with('supervisorgroup') ->with('superviseegroup'); $projects = $gres->getLoad('isProjectHelper') ? $projects->where('orgid', $req->orgid) : $projects->whereIn('id', $gres->getLoad('projectids')); $projects = querykeywords($projects, ['name'], $req->keywords); $projects = $projects ->orderBy('name', 'DESC') ->orderBy('category') ->get() ->map(function ($project) { $_project = json_decode(json_encode($project)); $supervisorgroup = $project->supervisorgroup()->exists() ? $project->supervisorgroup()->first() : null; $superviseegroup = $project->superviseegroup()->exists() ? $project->superviseegroup()->first() : null; $_project->categoryname = Project::categories[$project->category]; $_project->supervisorgroupid = $supervisorgroup ? $supervisorgroup->id : 0; $_project->supervisorgroupname = $supervisorgroup ? $supervisorgroup->name : '尚未设置'; $_project->superviseegroupid = $superviseegroup ? $superviseegroup->id : 0; $_project->superviseegroupname = $superviseegroup ? $superviseegroup->name : '尚未设置'; return $_project; });
这部分代码对之前查询得到的$projects变量进行了一系列的处理和加工。
首先,使用with方法加载了'supervisorgroup'和'superviseegroup'关联模型。
接下来,根据$gres对象的属性判断是否需要根据orgid或projectids进行过滤。如果isProjectHelper为true,则根据req对象的orgid进行过滤,否则根据gres对象的projectids进行过滤。
然后,使用querykeywords函数对$projects进行了关键字搜索,搜索字段为'name',搜索关键字为req对象的keywords。
接着,对$projects进行了排序,首先按照'name'字段降序排序,然后按照'category'字段排序。
之后,调用get方法获取查询结果,并使用map方法对每个$project进行了一系列的处理。
在map方法中,首先将$project对象转换成了$_project对象,以便后续操作。然后,通过supervisorgroup和superviseegroup关联关系判断是否存在对应的关联记录,并分别赋值给$supervisorgroup和$superviseegroup变量。
接下来,给$_project对象添加了一些属性:'categoryname'表示项目类别的名称(根据项目类别从Project类的categories数组中获取),'supervisorgroupid'表示监督组的ID(如果存在监督组则取ID,否则为0),'supervisorgroupname'表示监督组的名称(如果存在监督组则取名称,否则为'尚未设置'),'superviseegroupid'表示受监督组的ID(如果存在受监督组则取ID,否则为0),'superviseegroupname'表示受监督组的名称(如果存在受监督组则取名称,否则为'尚未设置')。
最后,返回处理后的$_project对象。
如果你有任何疑问,请继续提问。
阅读全文