Java如何读取配置文件中key重复的内容,而不被覆盖;如何用IdentityHashMap处理key重复的数据

Java读取properties可以使用jdk原生类库中java.util.properties,但是如果配置文件中会有key重复的情况,后面的键值对会覆盖前面的,那么应该怎么读取呢?读文件按行拆分?有没有第三方库实现?读取之后怎么用IdentityHashMap存储呢?IdentityHashMap使用应该注意哪些事项?其remove方法删除指定key时应该如何删除?下面将对此逐一展开描述!

原生类库Java读取properties可以使用jdk原生类库中java.util.properties读取配置

配置文件中有key重复时,java.util.properties的读取

有这样一个需求,将classpath下的redis配置文件redis.conf中的配置读入,redis.conf中会存在以下内容:

#RDB保存条件
save 900 1
save 300 10
save 60 10000

这样,用java.util.properties的读取后,就只包含一个键值对,键为save,值为60 10000,即前面的被覆盖。

使用文件拆分?

省略

第三方库读取

使用org.apacche.commons.configuration.PropertiesConfiguration
maven依赖:

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-configuration2</artifactId>
  <version>2.6.1-SNAPSHOT</version>
</dependency>

读取方法如下:redis.conf文件位于classpath下的config目录中。
在这里插入图片描述

将读得出来数据转为IdentityHashMap,便于处理

见上图遍历时,将其放入IdentityHashMap中,需要注意的是,key需要new String(key),这样生成不同的地址,否则在IdentityHashMap中仍然会被覆盖。

将IdentityHashMap数据创建k8s Configmaps资源对象

将IdentityHashMap数据转换为Json格式

将IdentityHashMap数据转换为Json格式再转换回来

将IdentityHashMap中的某个键值对移除,移除不掉?

将IdentityHashMap中的某个键值对移除的正确方法!

在这里插入图片描述
必须对数据进行遍历,获取到key的地址,才能将其remove,直接remove字符串是移除不掉的。

发布了125 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ll837448792/article/details/104037425