[英]How to create hash map with entries from .properties file
我想用.properties文件中的條目創建一個哈希映射。 我的屬性文件如下:
##AA
key1 = A1
key2 = A2
key3 = A3
##BB
key1 = B1
key2 = B2
key3 = B3
##CC
key1 = C1
key2 = C2
key3 = C3, C4
##DD
key1 = D1
key2 = D2
key3 = D3, D4
我將在excel表中維護AA,BB,CC,DD。
row1 = AA
row2 = BB
row3 = CC
row4 = DD
我想遍歷所有行,當它在第一行時,它應該進入
key1 = A1
key2 = A2
key3 = A3
到一個hashmap
第二排應該進入
key1 = B1
key2 = B2
key3 = B3
到一個hashmap等等....
它應該為每次迭代將鍵和值添加到相同的哈希映射中,並且應該清除哈希映射中的先前條目
您可以嘗試以下內容: -
Properties MyPropertyFile= new Properties();
FileInputStream ip = new FileInputStream(".properties file path");
MyPropertyFile.load(ip);
String row="AA"; //write logic to get row value from excel sheet and update in a variable.
HashMap<String, String> map=new HashMap<String, String>();
Set<Object> keys = MyPropertyFile.keySet();
for(Object k:keys){
String key=(String) k;
String value=MyPropertyFile.getProperty(key);
if(row.charAt(0)==value.charAt(0))// check row's first character and values first character are same.
map.put(key, value);
}
}
通常使用java.util.Properties
讀取屬性文件。 但是,由於您具有多次定義的相同鍵,因此在處理文件后,每個鍵只能使用其中一個值。 這意味着您需要手動讀取文件(可能是BufferedReader
),解析每一行,然后構建所需的地圖。
盡管除非您每次迭代創建一個新映射或對結果執行某些操作,否則清除迭代之間的散列映射並沒有多大意義。 同樣,HashMap每個鍵只能存儲一個值,因此您需要另一個數據結構來保存您可能需要的內容。
據我了解您的問題,您希望根據屬性文件中的注釋(## AA,## BB等)從屬性文件中選擇一組鍵值對。
請記住,通常,不應在屬性文件中重復“鍵”。 如果重復,那么它將始終獲取最后一個值。 例如,如果您嘗試檢索'key1'的值,它將始終返回'D1'。 您可以嘗試將密鑰命名為key1AA,key2AA,key3AA,key1BB,key2BB等。
此外,如果您嘗試檢索'key3',您將獲得完整的值'D3,D4'。
以下是我嘗試使用屬性文件的示例:
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
public class PropertiesToMap {
public static void main(String[] args) {
FileInputStream fis;
try {
fis = new FileInputStream("D://MyProps.properties");
ResourceBundle resources = new PropertyResourceBundle(fis);
Map<String,String> map = new HashMap<String,String>();
//convert ResourceBundle to Map
Enumeration<String> keys = resources.getKeys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
map.put(key, resources.getString(key));
}
//Now you can use the 'map' object as you wish.
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.