2013-11-27 126 views
1

有其结构如下属性文件:转换用逗号分隔的字符串映射的属性映射<字符串,列表<String>>

prob1=a,b,c,d 
prob2=e,f,j,h 

我们希望将其转换为Map<String,List<String>>

我知道我可以看地图,从属性文件创建一个映射bean作为:

<util:properties id="probs" 
location="classpath:/configs/sample.properties" /> 

我知道,我可以转换逗号分隔字符串列表与列出:

@Value("#{'${prob1}'.split(',')}") 
private List<String> Probs; 

但我不知道我怎么能实现Map<String,List<String>>

+0

也许你应该看看'Properties.entrySet()',看看这可能导致。 –

+0

你能解释一下吗?!我怎样才能访问这个方法? –

+0

'属性扩展HashTable <对象,对象>' - 我会在下面完整回答 –

回答

0

你为什么要摆在首位一个Map<String,List<String>>,即你会认为这样做,一个Properties无法实现?

否则,快速和肮脏的方法是这样的:

Map<String,List<String>> map = new HashMap<String,List<String>>(); 
for (Map.Entry<Object,Object> entry : properties.entrySet()) 
{ 
    List<String> list = new ArrayList<String>(); 
    list.addAll(Arrays.asList(((String)entry.getValue()).split(","))); 
    map.put((String)entry.getKey() , list); 
} 

干杯,

+0

通过地图>我可以找到map.get(“proper1”)。contains(“a”)。我想我无法通过属性来实现它 顺便说一句,我怎样才能使用你的代码,以便Spring为我制作这个bean。我应该编写一个bean来转换自己,还是我可以用更少的代码来完成它! –

相关问题