当前位置: 首页 > 知识库问答 >
问题:

如何使用中的条目创建哈希映射。属性文件

曹旭东
2023-03-14

我想用来自的条目创建一个哈希映射。属性文件。我的属性文件如下所示:

##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

变成一个哈希图

第二排它应该进入

key1 = B1
key2 = B2
key3 = B3

变成了hashmap等等...

它应该为每次迭代将键和值添加到同一个哈希映射中,并从哈希映射中清除之前的条目

共有3个答案

申屠英韶
2023-03-14

据我所知,您希望根据属性文件中的注释(##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();
        }


    }

}
尉迟正奇
2023-03-14

属性文件通常使用java.util.Properties读取。但是,由于您多次定义了相同的键,因此在处理文件后,每个键只有一个值可用。这意味着您需要手动读取文件(可能是BufferedReader),解析每行,并构建您想要的地图。

不过,在迭代之间清除hashmap没有多大意义,除非每次迭代都要创建一个新的映射,或者对结果做些什么。同样,HashMap只能为每个键存储一个值,因此您需要另一个数据结构来保存您可能需要的内容。

宗政元青
2023-03-14

您可以尝试以下方法:-

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);
    }
}
 类似资料:
  • 更准确地说,我甚至想要更详细的东西:目标应该是一个包含三个属性的类,其中产生的目标值必须被拆分为三个属性。例如,如果mysource.propa的值为“abc”,那么目标myTarget应该得到一个类似于“v01.123.456.ab”的值。该值依次分为preValue、middleValue和endvalue: preValue=“V01” middleValue=“123.456”

  • 我需要从我的Android向Algolia发送数据,发送的数据应该是JSONObject格式(导入org.json.JSONObject) Algolia中的数据应采用此格式 所以在Android中,我这样设置代码 在这行代码中 那么我应该怎么做才能以JSONObject格式发送hashmap数据呢?

  • 本文向大家介绍Java中并发哈希映射和同步哈希映射之间的区别,包括了Java中并发哈希映射和同步哈希映射之间的区别的使用技巧和注意事项,需要的朋友参考一下 并发Hashmap是jdk1.5中引入的类。并发哈希映射仅在添加或更新映射时在称为片段的存储桶级别应用锁。因此,并发哈希映射允许对映射进行并发读写操作。  同步hashmap(Collection.syncronizedHashMap())是C

  • 问题内容: 用Java创建哈希表(或关联数组…)的最直接方法是什么?我的google-fu提供了几个示例,但是有标准的方法吗? 有没有一种方法可以用键-值对的列表填充表,而无需为每个对分别在对象上调用add方法? 问题答案: 这两个类都可以从java.util包中找到。下面的jGuru FAQ条目 解释了两者之间的区别。

  • 这是我的employee.hbm.xml: 所以,您可以注意到,在我的类中,它没有“id”属性。但是,我在数据库中创建id列,让它成为自动生成的主键。在这种情况下,我不知道应该在将我的类映射到我的数据库。如果我忽略了它,会不会是后来的一些问题呢?

  • 我从数组列表中检索数据。已有数组列表具有与哈希映射类型(key、values)相同值;在从数组列表中检索这些数据并映射到哈希映射变量之后。我必须用一个叫做tax的变量来分组。 1)在哈希映射中添加Add 之后,将这些哈希映射值添加到名为final_cart_list_1的数组列表初始化类型的Arraylist中 在此之后,我将所有产品的产品特别税值 税务的日志cat值如下所示 之后,我采取产品的具