Java 将属性文件中的值读入地图<;PropertyName,ListOfValues>;?

Java 将属性文件中的值读入地图<;PropertyName,ListOfValues>;?,java,spring,list,map,properties,Java,Spring,List,Map,Properties,我有以下属性文件 MyCat.MyVal1=a,b,c,d,e MyCat.MyVal2=z,d,e MyCat.MyVal3=a,b 并且需要构造一个映射,其中key是属性文件的键,value a list Strings是属性值,例如MyMap(String,list) 例如,使用 Key=MyCat.MyVal1值列表a、b、c、d、e Key=MyCat.MyVal2值列表z、d、e 现在我知道您可以使用Spring从属性文件中读取一个特定值到列表中 @Component cla

我有以下属性文件

  • MyCat.MyVal1=a,b,c,d,e
  • MyCat.MyVal2=z,d,e
  • MyCat.MyVal3=a,b
并且需要构造一个映射,其中key是属性文件的键,value a list Strings是属性值,例如MyMap(String,list)

例如,使用

  • Key=MyCat.MyVal1值列表a、b、c、d、e
  • Key=MyCat.MyVal2值列表z、d、e
现在我知道您可以使用Spring从属性文件中读取一个特定值到列表中

@Component
class MyClass {
@Value("${my.property.name}")
private String[] myValues;
}
最终,我能找到的唯一方法是编写一个自定义类,逐行读取所有属性,获取属性的值,并将其拆分,然后在此基础上创建一个列表,并构建一个映射


我只是想问一下,是否有更简单的方法可以做到这一点?

我建议更改属性格式并使用一个很棒的库--这在许多类似的任务中可能很方便。 看起来像

JYaml可以轻松利用Yaml的灵活性。默认情况下,JYaml将序列转换为java.util.ArrayList,并将映射转换为java.util.HashMap。但是,可以通过标记或类型推断来覆盖此行为,这允许将映射转换为JavaBean,或将序列转换为数组或其他类型的集合

要将Java对象写入Yaml格式的文件,只需

Yaml.dump(对象,新文件(“object.yml”)

相反,将Yaml文件加载到Java land中

Object Object=Yaml.load(新文件(“Object.yml”)

您可以使用类从属性文件中读取值

因此,您的代码可能与

 private Properties loadProperty(String propertiesFilePath)
    throws FileNotFoundException, IOException 
  {
    Properties metaData = new Properties();

    FileInputStream fis = new FileInputStream(new File(propertiesFilePath));
    metaData.load(fis);

    fis.close();
    return (metaData);
  }

嗨,Tushar,我很高兴阅读属性文件并创建Map@Chrispie例如你想要像这样的吗