首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >几个不同的映射可以共享相同的键集吗?

几个不同的映射可以共享相同的键集吗?
EN

Stack Overflow用户
提问于 2018-10-30 17:53:58
回答 2查看 52关注 0票数 0

我特别使用Java,但即使这在Java中是不可能的,我也很有兴趣知道它在任何语言中是否都是可能的。

我在学生类中有一组考试对象,表示学生参加的考试,对于其中的每一项考试,我希望跟踪学生对考试问题的回答,并希望跟踪学生在每次考试中的成绩。

要实现这一点,最直接的方法就是为每个关系创建两个映射。但是,我希望能够保证存在于映射中的任何键都存在于所有映射中,并且从任何映射中删除一个键应该将其从所有映射中删除。当每个映射的键实际上都表示相同的东西时,使用单个公共键集似乎会更有效:学生参加的考试集。

那么,有没有可能让几个不同的map依赖于同一个键集呢?不管这是否可能,有没有理由说这只是一个坏主意?

谢谢!非常感谢您的建议:)

编辑:对于记录,我只需要实例化一个新的映射,然后遍历原始映射的键集,将每个键添加到新的映射中,但我认为这不会达到我想要的效果。我将创建一个新的键集,该键集恰好包含原始键集的所有引用。我的两个map实际上并不依赖于相同的键集,因此更改其中一个不会影响另一个。

EN

回答 2

Stack Overflow用户

发布于 2018-10-30 18:07:19

在Java语言(和大多数语言)中,键集在Map实现内部是紧密耦合的,因为它会影响如何查找键以找到它们的值。一个Map可以使用将值对象与键相关联的HashSet实现,并处理散列冲突,而另一个Map可以使用TreeSet。您可以创建自己的Map实现,但我怀疑它的模型是错误的。

你为什么不改变一下方法呢?您可以说您实际上有一组键、Student和多个值、学生获取的一组Exam和每个Exam的一组Grade

那么,如果您创建了一个名为StudentExams的新类,其中包含一个Map<Exam, Grade>,那又会怎样呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class StudentExams {
  private Map<Exam, Grade> examGrades = ... //choose whatever you want

  //... constructor and setter methods here if you need them

  public Set<Exam> getExams() {
     return examGrades.keySet();
  }

  /**
    * Returns the Grade for the exam the student took, 
    * or Optional.empty() if the student did not take that exam.
    */ 
  public Optional<Grade> getGrade(Exam exam) {
     return Optional.ofNullable(examGrades.get(exam));
  }
}

然后在你的主Map中有一个Map<Student, StudentExams>

通过这种方式,您可以获得每个学生的StudentExams,并提取Exam对象集及其Grade对象。

票数 1
EN

Stack Overflow用户

发布于 2018-10-30 18:21:26

所以有可能让几个不同的映射依赖于同一个键集吗?

最简单的方法是使用一个Map,其中的值包含其他Map的所有值。

这边请

  • 只有一个密钥集。
  • 添加一个密钥会添加一个密钥会删除所有的值。

而不是说

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Map<String, String> nameMap
Map<String, Long> counterMap
Map<String, Double> scoreMap

你转而看重

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Values {
    String name;
    long counter;
    double score;
}

Map<String, Values> valuesMap;

可以创建此Map的视图,使其显示为原始的多个Map,但不太可能值得这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53070162

复制
相关文章
单细胞亚群的标记基因可以迁移在不同数据集吗
这样的分析已经是超级简单的了,参考前面的例子:人人都能学会的单细胞聚类分群注释,读入这个文章的GSE162610数据集,进行标准的seurat流程即可。可以看到是如下所示的10个样品:
生信技能树
2022/01/10
1.2K0
单细胞亚群的标记基因可以迁移在不同数据集吗
相同的时间,不同的人生
在规定的时间内,一个人目标的达成情况(创造的价值),我们称之为效率。如此可见效率与时间是密切相关的,提高效率首先要做的就是提高我们的时间利用率。
keinYe
2020/05/25
1.2K0
你的网站可以一键变色吗?
得益于 Web 标准的发展和设计风格的变化,前端开发者从通过切图还原设计逐渐变为通过代码还原设计。CSS 预处理器也在一定程度上弥补了 CSS 本身表达能力的不足,许多 UI 框架(比如 Element)将基础的颜色值作为配置项供使用者定制,其余的颜色则在它们的基础上调整亮度/饱和度,或者与其他颜色混合而成。虽说做不到一键变色,但是通过重新构建来改变整个网站的配色是没有问题的。 除了可定制,这样做还可以让代码变得更容易维护。相比较充斥着各种颜色值的 CSS 代码,甚至可以表达出一些配色思路。 配色思路?
腾讯NEXT学位
2018/05/14
1.7K0
Socket Sendto 可以传入不同的目的地址吗
通常我们认为 socket 中 地址信息 和 socket句柄 是一一对应的,不能往一个socket句柄中,传入不同的地址信息。
twowinter
2020/04/17
1.8K0
ACL2022 | 跨模态离散化表示学习:让不同的模态共享相同的词表
每天给你送来NLP技术干货! ---- 作者 | 朱耀明 单位 | 字节跳动人工智能实验室 研究方向 | 机器翻译 排版 | PaperWeekly 本文提出了一种自监督学习方法,让不同模态的数据可以被建模到同一个离散的细粒度表征中——即用一个类似词表的东西来建模跨模态的数据。作者认为用这种离散化的“词”可以提升跨模态检索的精度、并且让模型有更好的解释性。 论文标题: Cross-Modal Discrete Representation Learning 作者单位: MIT麻省理工学院 论文链接: h
zenRRan
2022/07/18
9910
ACL2022 | 跨模态离散化表示学习:让不同的模态共享相同的词表
consul注册相同服务,相同程序,相同IP,不同端口来负载的问题
由于今天发现运维代码未正常发布。想要自己手动发布。发现原有服务名mos-x3-gls-service只有1个node启动,为了保障发布时原有服务不中断我需要再注册1个node,于是我简单修改了原有springboot端口9112为9113,启动后发现9113的节点正常注册,但是原来9112端口的节点服务没有了,搞了个寂寞。原因是如果在Spring Cloud Consul中使用相同的节点id进行注册,那么Consul将会将它们视为同一个节点,并将它们注册为同一个节点。老了,大意了。于是我把注册consul的节点id设置为服务名称+进程id即可解决。
高久峰
2023/06/17
5150
Simulator 和 Emulator 的相同和不同;
在看模拟器的时候,出现了关于Simulator和Emulator两种词汇;都可以翻译为模拟器;但在调研游戏模拟器的时候,多为Emulator; 两者词汇的含义和应用场景有什么异同呢?
西湖醋鱼
2021/02/23
2K0
SAP WM 2个不同的存储类型之下可以有相同代码的Storage Bin
SAP WM 模块里,在2个不同的存储类型之下可以有相同代码的Storage Bin。这是SAP标准行为。
SAP虾客
2023/08/29
2000
map合并,相同键对应的值相加
最近在做统计钱的计算时遇到的一个需求,需要将一个大类别下的每一种钱进行特定的运算然后获得六年的钱,最后将这些钱按照年份进行汇总,获得总得大类型的六年的钱,在这个过程中采用了这种方法,每次算得钱放在map中,然后将map进行合并,写篇随笔mark下。
河岸飞流
2019/08/09
4K0
ROS端口映射的几个做法
方法1(接口方法) / ip firewall nat add chain=dstnat in-interface=adsl接口名 protocol=tcp dst-port=要开放的外网端口 \ action=dst-nat to-addresses=要映射的内网IP地址 to-ports=要映射的内网端口 comment=”” \ disabled=no
it妹
2019/08/09
6.8K0
ROS端口映射的几个做法
实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务
数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用,对于个人用户也有很强的实用意义。也正因如此,大量数据共享软件被开发出来,云存储的概念也被重复炒作。对于爱好折腾的笔者来说,用最简单的工具找寻私人共享和存储解决方案,也是件很有趣的事。今天,笔者就为大家介绍,如何使用python这样的简单程序语言,在自己的电脑上搭建一个共享文件服务器,并通过cpolar创建的数据隧道,将其变为能在公共互联网上访问的私人云盘。
会洗碗的CV工程师
2023/10/14
5810
实现不同局域网间的文件共享和端口映射,使用Python自带的HTTP服务
php 比较获取两个数组相同和不同元素的例子(交集和差集)
array_intersect()该函数比较两个(或更多个)数组的键值,并返回交集数组,该数组包括了所有在被比较的数组(array1)中,
用户8824291
2021/07/13
3.3K0
不同的GSE数据集有不同的临床信息,不同的分组技巧
Jimmy大神怎么说过,只有多做、多错,才能真正的掌握。所以下面通过几个实战来说明。
生信技能树
2019/11/11
9.3K0
Linux的内存共享映射(mmap和munmap)
       Linux下的进程间通信也可以使用mmap的内存共享映射来实现,mmap的作用就是把磁盘文件的一部分直接映射到进程的内存中,那么进程就可以直接对该内存文件进行操作,mmap也设置了两种机制:共享和私有,如果是共享映射,那么在内存中对文件进行修改,磁盘中对应的文件也会被修改,相反,磁盘中的文件有了修改,内存中的文件也被修改。如果是私有映射,那么内存中的文件是独立的,二者进行修改都不会对对方造成影响。通过这样的内存共享映射就相当于是进程直接对磁盘中的文件进行读写操作一样,那么如果有两个进程来mmap同一个文件,就实现了进程间的通信。磁盘中的文件通过mmap函数来实现映射,然后通过munmap函数取消映射。先来看一下函数的原型:
Ch_Zaqdt
2020/03/05
8.3K0
Linux的内存共享映射(mmap和munmap)
C# 存储相同键多个值的Dictionary
C盘下面有个根文件夹SaveFile,SaveFIle下面有两个子文件夹分别为,2018、2019,
用户7053485
2020/03/12
4.5K0
不同语言的程序员有着这些相同的生活!
程序员的生活总是有跟多槽点和笑点 但是还是一如既然的笑着生活着 今天一起来看看 程序员的那些事
老九君
2018/12/29
8390
不同语言的程序员有着这些相同的生活!
iOS中相同IP,不同端口,session失效的问题
公司在https服务器(端口443)进行正常登陆业务等处理 https://ip1:443/ 然后在端口444服务器进行资料文件上传等处理 https://ip1:444/ 因为服务器在https://ip1:443/登陆成功之后对cookie中的session进行校验保存,而一旦出现访问443->444->443,就是进行文件上传操作后,再调用443端口后,服务器对session校验失败,出现会话超时问题
freesan44
2018/09/05
2K0
Java equals 和 hashCode 的这几个问题可以说明白吗?
上一篇文章 如何妙用Spring 数据绑定机制,灵魂追问 环节留下了一个有关 equals 和 hashcode 问题 。基础面试经常会碰到与之相关的问题,这不是一个复杂的问题,但很多朋友都苦于说明他们二者的关系和约束,于是写本文做单独说明,本篇文章将循序渐进 ( 通过举例,让记忆与理解更轻松 ) 说明这些让你有些苦恼的问题,Let's go .......
用户4172423
2019/12/25
3860
Java equals 和 hashCode 的这几个问题可以说明白吗?
点击加载更多

相似问题

多个Azure the作业可以共享相同的程序集吗?

13

HashMap包含几个具有相同值的不同键?

45

Emacs相同的键映射不同的命令

10

我可以列出几个键来执行相同的操作吗?[AHK]

210

在TFS中,多个人可以共享相同的搁置集吗?

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文