对于由属性文件控制的循环迭代?

时间:2016-04-08 11:02:00

标签: java loops for-loop hashmap properties-file

我的应用程序包含method,用于使用Hash Map循环For-Loop

public void iterateHashMap(Map<Dog, List<String>> mapOfDogsAndDescriptions){

        for (Map.Entry<Dog, List<String>> entry : mapOfDogIdsAndStrings.entrySet()) {
            String key = entry.getKey().getId();
            List<String> StringList = entry.getValue();

            //do something
            }

    }

我希望能够定义根据我的properties文件中的属性迭代循环次数

E.g。如果属性设置为3,那么它只会遍历Hash Map中的前3个键。

这是我第一次在Java应用程序中使用properties file,我该怎么做?

3 个答案:

答案 0 :(得分:2)

我会做这样的事情:

public void iterateHashMap(Map<Dog, List<String>> mapOfDogsAndDescriptions){
    int count = Integer.parseInt(System.getProperty("count"));
    for (Map.Entry<Dog, List<String>> entry : mapOfDogIdsAndStrings.entrySet()) {
        if (count-- <= 0)
            break;
        String key = entry.getKey().getId();
        List<String> StringList = entry.getValue();

        //do something
    }

}

答案 1 :(得分:0)

您使用的是任何框架吗?在Spring Framework中,您可以这样做:

@Resource(name = "properties")
private Properties properties;

在你的applicationContext中:

<bean id="properties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="location" value="classpath:urls.properties"></property>
</bean>

最后,在你的方法中:

int counter = 0;

Integer limit = Integer.parseInt(properties.getProperty("some property"));

for(//Some conditions){
    //Some code

    counter++;
    if(counter > limit) break;
}

答案 2 :(得分:0)

在纯java中你可以做到

Properties prop = new Properties();
String propFileName = "config.properties";

InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);

if (inputStream != null) {
    prop.load(inputStream);
} else {
    throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
}

int cpt  = Integer.valueOf(prop.getProperty("counter"));
int cptLoop = 0;
for (Map.Entry<Dog, List<String>> entry : mapOfDogIdsAndStrings.entrySet()) {
    if (cptLoop == cpt)
        break;
    String key = entry.getKey().getId();
    List<String> StringList = entry.getValue();

    //do something
    cptLoop++;
}