【问题标题】:Foreach java 8 from list of String to StringForeach java 8 从字符串列表到字符串
【发布时间】:2016-01-26 09:26:15
【问题描述】:

我有一个成员函数,它将检索成员的所有membershipId(一个成员可能有多个membershipId)。使用List 检索所有membershipId 后,它将像这样调用url。

这是我的服务:

RestRequest request = RestRequest.newBuilder()
                .url("/membership/" + membershipId + "/outlet")
                .get();

这是我的控制器:

 @RequestMapping(value = "/favouriteStores", method = RequestMethod.GET)
        public Object FavouriteStores(ModelMap modelMap,HttpSession session)throws  Exception {
          String memberId = "5677a7075e3f1b998fc7483b";


 List<Membership> membershipList= memberService.getMembershipByMemberId(memberId);

 List<String>  membershipIds = membershipList.stream().map(m->m.getId()).collect(Collectors.toList());
         String membershipId = membershipIds.toString();

        Set<Outlet> outletSet = membershipService.getOutletByMembershipId(membershipId);

我的问题是它会像这样转换一个网址中的整个membershipId “会员/[12345, 54321]/出口” 应该是两个url,比如“membership/[12345]/outlet”和“membership/[54321]/outlet”

我知道我们可以在控制器中使用 foreach 来执行此操作,但我不知道如何。感谢您的帮助。

【问题讨论】:

  • 第一个网址是“membership/[12345]/outlet”还是“membership/12345/outlet”?
  • 您好,应该是“membership/12345/outlet”

标签: java spring-mvc foreach java-8


【解决方案1】:

改用Streammap 方法: 您可以使用Streammap 方法实现此目的。

Set<Outlet> outletSet = membershipIds.stream()
    .map(membershipService::getOutletByMembershipId)
    .collect(Collectors.toSet());

即使您可以结合之前的流操作并省略中间列表对象的创建:

String memberId = "5677a7075e3f1b998fc7483b";

Set<Outlet> outletSet = memberService.getMembershipByMemberId(memberId)
    .stream()
    .map(Membership::getId)
    .map(membershipService::getOutletByMembershipId)
    .collect(Collectors.toSet())

【讨论】:

  • 最好将其与第一个流操作结合起来,以摆脱那些抵消流目的的中间列表。
  • 对。我太专注于问题领域。我已经更新了我的答案。
猜你喜欢
  • 2013-09-15
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多