2013-11-27 4 views
1

Существует свойство файла, которое структурировано, как показано ниже:Преобразовать свойство отображений с запятыми строку к карте <String, List <String>>

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

Мы хотим, чтобы преобразовать его в Map<String,List<String>>

I знаю, что я могу прочитать карту и сделать карту боб из файлов свойств, как:

<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

'Свойства extends 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); 
} 

Cheers,

+0

На карте > Я могу найти map.get ("proper1"). Contains ("a"). Я думаю, что не могу достичь этого с помощью свойств Кстати, как я могу использовать ваш код, чтобы Spring создавал этот компонент для меня. Должен ли я писать компонент для преобразования себя или я могу сделать это с меньшим количеством кода! –

Смежные вопросы