2016-06-07 76 views
1

過濾從地圖鍵值我有地圖樣如何使用流API

contractAttributesMap=new HashMap<String,WsContractAttribute>(); 
contractAttributesMap.put("entityDisplayName", new WsContractAttribute("label_contractmap_entityDisplayName","entityDisplayName",WsContractAttribute.AttriibuteType.TEXT)); 
contractAttributesMap.put("entityNumber",new WsContractAttribute("label_contractmap_entityNumber","entityNumber",WsContractAttribute.AttriibuteType.TEXT)); 
//other code 

我想就像鍵名的密鑰列表即列表來從鍵的列表值。

我知道一個辦法

private static List<WsContractAttribute> getContractAttributes(Set<String> fields){ 
      for(String fieldName:fields){ 
      contractAttributesMap.entrySet() 
        .parallelStream() 
        .filter(e -> e.getKey().contains(fieldName)) 
        .map(e -> e.getKey()) 
        .collect(Collectors.toList()); 
      } 


     } 

但不是循環我想通過這個名單身變爲流API,這將匹配過濾器的重視和返回列表。 這是可能的。 在此先感謝。

+0

的解釋也許你正在尋找類似'fields.stream()。地圖(contractAttributesMap ::獲得).collect來完成(toList())' ? – aioobe

+0

是的非常感謝你:) – iMBMT

回答

0

這將由@aioobe

private static List<WsContractAttribute> getContractAttributes(Set<String> fields){ 
      List<WsContractAttribute> list=fields.stream().map(contractAttributesMap::get).collect(Collectors.toList()); 
      return list; 
     }