最短的反转属性的方法

在Java中我有一个java.util.Properties对象,我想获得另一个具有相同对但但是键转换为值而反之亦然。

如果存在碰撞(即有两个相等的值),则只需选择任意键作为值。

最简单的方法是什么?

随意使用库,公共集合或其他任何东西。

Properties对象是一个Hashtable对象,因此您应该能够执行以下操作:

 Hashtable reversedProps = new Hashtable(); for (String key : props.keySet()) { reversedProps.put(props.get(key), key); } 

结果:3行代码。

这段代码未经测试,但它应该给你一个想法。

你可以考虑使用谷歌collections的BiMap,这本质上是一个可逆的地图。 它保证了密钥和值的一致性。

看看这里 。 这是API

就像是:

 Properties fowards = new Properties(); fowards.load(new FileInputStream("local.properties")); Properties backwards = new Properties(); for (String propertyName : fowards.stringPropertyNames()) { backwards.setProperty(forwards.get(propertyName), propertyName); }