我想要一个将两个字符串映射到一个字符串的映射。例如:map["MainServer","Status"]
返回“有效”。在Java中使用它的最佳方法是什么。我应该使用包含另一个HashMap作为其元素的HashMap吗?
答案 0 :(得分:3)
拥有地图的地图意味着您正在进行双重查找(语义和成本方面)。 这是你真正想要的吗?
最好定义一个包含X字符串的MapKeyPair类,并为它们重写equals和hashCode。
更一般地说,如果该对具有实际意义或抽象,则通过适当命名的对象来表示它。
答案 1 :(得分:1)
听起来您正在向服务器对象发送消息以获取返回值。
为什么不创建一个具有名称和状态(以及所有其他辅助属性)的Server类,设置它,并将servername映射到服务器?
然后,你做这样的事情。
Server server = map.get(serverName);
return server.getStatus();
答案 2 :(得分:1)
在我看来,唯一重要的信息是最后的价值。
在这种情况下,最简单的解决方案是将字符串组合成一个单个键字符串 映射[ “MainServerStatus”]
如果你想拥有“MainServer”的所有值,你可以迭代所有元素并过滤那些以字符串“MainServer”开头的元素。
这是一个非常基本且简单的解决方案,但是当您不想知道“MainServer”的所有元素时,您可以使用它。否则可能会降低您的应用程序的速度
答案 3 :(得分:0)
如果对的总数很小,那就简单一点:从第一个键映射到第二个映射;第二个Map从第二个键转到值。
如果对的总数很大,性能可能很重要。如果确实如此,我建议使用与上述相同的解决方案,但选择具有最小预期范围的密钥(例如,如果第一个密钥是数千个名称中的一个,第二个密钥是十个预定义状态之一) ,让第二个键成为你查找的第一个键。
如果性能无关紧要,请选择设计透明度:使用Pair类作为单个Map中的键。 (一对Pair类非常有用,你现在应该已经写好了。)