当前位置: 首页 > 面试题库 >

Java 如何实现具有多个键的地图?

萧无尘
2023-03-14
问题内容

我需要一个数据结构,其行为类似于Map,但是使用多个(不同类型的)键来访问其值。
(让我们不太笼统,假设有两个键)

键保证是唯一的。

就像是:

MyMap<K1,K2,V> ...

使用以下方法:

getByKey1(K1 key)...
getByKey2(K2 key)...
containsKey1(K1 key)...
containsKey2(K2 key)...

你有什么建议吗?

我唯一能想到的是:
编写一个内部使用两个Maps的类。

编辑 有人建议我使用元组,一对或类似键作为Java Map的键,但是这对我来说不起作用:
如上所述,我必须只能通过两个键之一来搜索值指定。
映射使用键的哈希码并检查其相等性。


问题答案:

两张地图。一个Map<K1, V>和一个Map<K2, V>。如果必须具有单个接口,请编写一个实现上述方法的包装器类。



 类似资料:
  • 问题内容: 我想要一张包含重复键的地图。 我知道有很多地图实现(Eclipse向我展示了大约50个),所以我敢肯定一定有一个允许这样做的地图实现。我知道编写自己的地图很容易做到这一点,但是我宁愿使用一些现有的解决方案。 也许在Commons Collections或Google Collections中? 问题答案: 你正在搜索多图,而commons-collection和Guava确实都有几种实

  • 我有一个hashmap有这样的键:'2+4+5','653+65+1324+75'。(整数值用+号分隔) 什么是一个好的hashcode和equals方法,使得像'2+4+5','5+4+2','4+5+2'...(所有2,4,5的排列)这样的键应该返回相同的hashcode值,而equals应该返回true。 我计划在键中取整数值,对它们进行排序,按升序将它们放入一个字符串中,并调用string

  • 问题内容: 我有一个pandas df,并希望按照以下原则(用SQL术语)完成一些工作: 现在,这适用于一个列/值对: 但是,我不确定如何将其扩展为多个列/值对。 为了清楚起见,每一列都匹配一个不同的值。 问题答案: 由于运算符的优先级,您需要将多个条件括在括号中,并使用按位运算符()和(或)和()。 如果使用或,则熊猫可能会抱怨这是模棱两可的。在那种情况下,我们是否要比较条件中一系列的每个值还不

  • 问题内容: 我正在尝试使用JPA 2.0创建具有通用关系的多态实体。应该有两个表,一个事件表和一个通知表。在这些表内是彼此相关的具体实体,如下所示: 从逻辑上讲,这应该在休眠状态下是可能的,因为在SQL中是可能的: 这就是我所拥有的: 使用此代码,我可以持久保存并获取任何Event,Notification,LoginEvent或NotificationEvent,但是当我尝试在JPA 2.0元模

  • 当我在导航图中有多个顶级目的地,并且当我点击后退键完成我的应用程序时,除了之外的那些目的地不会完成,而是弹出片段。 FragmentA(开始目的地)- 我试过和/或但徒劳无功。 活动: layout.xml: nav_graph: 我知道重写是一种变通方法。 还有更根本的解决办法吗?

  • 下面是我想尝试使用java收集器编写的代码。 给定一个人的2个属性(firstname和lastname),我想获得一个包含唯一的firstname或lastname作为键的地图,以及相应的人的列表。 和填充映射的代码: 我不知道如何将firstname或lastname作为键(不像Java8中的Group by multiple field names)。我一定要写我自己的收藏家吗?