2016-04-08 14 views
0

kullanıyorum bir Hash Map döngü için kullanılan bir method içeren bir uygulama bir For-Loop:Döngü yinelemeleri için özellikler dosyası tarafından kontrol ediliyor mu?

döngü bir özelliğinde bağımlı tekrarlanır kaç kez Ben tanımlamak mümkün istiyorum
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 
      } 

    } 

benim properties dosyam.

E.g. Özellik 3 olarak ayarlanmışsa, yalnızca Hash Map'daki ilk 3 anahtardan geçer.

Bu, bir Java uygulamasında ilk kez properties file kullanıyorum, Nasıl yaparım?

+0

Daha önce bu değeri ('' '' '' '' '' '' 'özellikler dosyasından okumayı başardınız mı? – f1sh

+0

Hayır, sadece bu – java123999

+0

çözme başlıyorum "İlk N" küçük bir sorunu olan bir gerekliliktir. Bir HashMap için, tuşlar sıralanmamıştır, dolayısıyla ilk N belirsizdir. Bir TreeMap için, tüm sıralanmış tuşların ilk N'sidir. LinkedHashMap için, haritaya eklenmesi için ilk N'dir. –

cevap

2

Böyle bir şey yapacağını:

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 
    } 

} 
+0

Saymayı azaltmak için unutmuş olabilirsiniz. – SantiBailors

+0

Evet, evet yaptım. Teşekkürler. –

+0

Bunu açıklar mısınız, onu takip edemem? Teşekkürler – java123999

0

Herhangi bir çerçeve kullanıyor musunuz?

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

Ve ApplicationContext içinde: Bahar Çerçevesinde siz bunu yapabilirsiniz

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

Son olarak, yöntemde:

int counter = 0; 

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

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

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

Teşekkürler, ancak sonra bu döngüyü yalnızca HashMap'teki ilk 3 giriş değeriyle yinelemek için nasıl alabilirim? – java123999

+0

Her yinelemede 1 sayacı, artım kullanın, özellik ile karşılaştırın ve sonra döngüden çıkmak için ara kullanın – Wakachopo

+0

Buna bir örnek verebilir misiniz? – java123999

0

Saf j içinde ava yapabilirsin

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++; 
} 
İlgili konular