package com.levelup.java.collections; import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; import static org.junit.Assert.assertThat; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import java.util.stream.Collectors; import java.util.stream.Stream; import org.apache.log4j.Logger; import org.junit.Test; import com.google.common.collect.Maps; /** * This java example will demonstrate converting properties to Map<String, * String> * * @author Justin Musgrove * @see <a href= * 'http://www.leveluplunch.com/java/examples/convert-properties-to-map/'>Conver * t properties to map</a> * */ public class ConvertPropertiesToMap { private static final Logger logger = Logger .getLogger(ConvertPropertiesToMap.class); @Test public void create_map_from_properties() { Properties properties = new Properties(); properties.put("database.username", "yourname"); properties.put("database.password", "encrypted_password"); properties.put("database.driver", "com.mysql.jdbc.Driver"); properties.put("database.url", "jdbc:mysql://localhost:3306/sakila?profileSQL=true"); @SuppressWarnings({ "unchecked", "rawtypes" }) Map<String, String> mapOfProperties = new HashMap(properties); assertThat( mapOfProperties.keySet(), containsInAnyOrder("database.username", "database.password", "database.driver", "database.url")); } @Test public void create_map_from_properties_java() { Properties properties = new Properties(); properties.put("database.username", "yourname"); properties.put("database.password", "encrypted_password"); properties.put("database.driver", "com.mysql.jdbc.Driver"); properties.put("database.url", "jdbc:mysql://localhost:3306/sakila?profileSQL=true"); Map<String, String> mapOfProperties = new HashMap<String, String>(); Enumeration<?> propertyNames = properties.propertyNames(); while (propertyNames.hasMoreElements()) { String key = (String) propertyNames.nextElement(); mapOfProperties.put(key, properties.getProperty(key)); } logger.info(mapOfProperties); assertThat( mapOfProperties.keySet(), containsInAnyOrder("database.username", "database.password", "database.driver", "database.url")); } @Test public void create_map_from_properties_java8() { Properties properties = new Properties(); properties.put("database.username", "yourname"); properties.put("database.password", "encrypted_password"); properties.put("database.driver", "com.mysql.jdbc.Driver"); properties.put("database.url", "jdbc:mysql://localhost:3306/sakila?profileSQL=true"); Stream<Entry<Object, Object>> stream = properties.entrySet().stream(); Map<String, String> mapOfProperties = stream.collect(Collectors.toMap( e -> String.valueOf(e.getKey()), e -> String.valueOf(e.getValue()))); assertThat( mapOfProperties.keySet(), containsInAnyOrder("database.username", "database.password", "database.driver", "database.url")); } @Test public void create_map_from_properties_guava() { Properties properties = new Properties(); properties.put("database.username", "yourname"); properties.put("database.password", "encrypted_password"); properties.put("database.driver", "com.mysql.jdbc.Driver"); properties.put("database.url", "jdbc:mysql://localhost:3306/sakila?profileSQL=true"); Map<String, String> mapOfProperties = Maps.fromProperties(properties); logger.info(mapOfProperties); assertThat( mapOfProperties.keySet(), containsInAnyOrder("database.username", "database.password", "database.driver", "database.url")); } }