2016-01-26 71 views
-1

我有一個成員函數,將檢索成員的所有membershipId(一個成員可能有多個membershipId)。檢索所有membershipId使用列表後,它將像這樣調用url。Foreach java 8從字符串列表到字符串

這是我的服務:

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在一個URL這樣 「會員/ [12345 ,54321]/outlet「 它應該是兩個網址,如」membership/[12345]/outlet「和」membership/[54321]/outlet「

我知道我們可以使用foreach在控制器中做到這一點,但我不知道如何。謝謝任何幫助。

+1

首先URL會「會員/ [12345] /出口」或「會員/ 12345 /出口」 ? – mks

+0

嗨,它應該是「membership/12345/outlet」 –

回答

3

嘗試的Streammap方法來代替: 可以實現Stream使用這種方法map

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()) 
+1

將它與第一個流操作結合以擺脫那些抵消流的目的的中間列表會更好。 – Holger

+0

對。我太專注於問題領域。我已經更新了我的答案。 – mks