Java中如何实现一一对应的数据结构

时间:2021-05-28 11:41:05
请问Java中有没有一种数据结构的类能实现一一对应的关系?
有n个唯一编号的抽屉,已经m个不同颜色的球,每个抽屉可以放入一或零个球。
举例,1号抽屉放入红色球,2号抽屉放入绿色球。
如果这个时候要将红色球放入3号抽屉,则必须先将其从1号抽屉取出。

有没有现成的类可以实现这种对应关系?

9 个解决方案

#1


顶起来啊,看看答案

#2


hashmap

#3


hashmap是不适合的,因其只能实现单向的一一映射。如果将抽屉为key,其中的球为value,则你可以根据抽屉检索到对应球是什么颜色的,但不能反向根据要找的某一颜色的球检索到唯一的抽屉;反之(key和value倒一下)亦然。
除非建立两个hashmap,但是这样的操作就很繁琐了。

#4


既然没提供,那就自己定义试试喽。

#5


google的guava库提供BiMap实现双向映射。

#6


自己写呗,一定要所以功能都给你准备好? Java中如何实现一一对应的数据结构

#7


引用 5 楼 huntor 的回复:
google的guava库提供BiMap实现双向映射。


这都行! 先搜搜看试试 

不过吧 这种关系楼主可以自己写的

#8


Map<A,B> map1 = new ...;
Map<B,A> map2 = new ...;

#9


Map<A,Map<B,A>>

#1


顶起来啊,看看答案

#2


hashmap

#3


hashmap是不适合的,因其只能实现单向的一一映射。如果将抽屉为key,其中的球为value,则你可以根据抽屉检索到对应球是什么颜色的,但不能反向根据要找的某一颜色的球检索到唯一的抽屉;反之(key和value倒一下)亦然。
除非建立两个hashmap,但是这样的操作就很繁琐了。

#4


既然没提供,那就自己定义试试喽。

#5


google的guava库提供BiMap实现双向映射。

#6


自己写呗,一定要所以功能都给你准备好? Java中如何实现一一对应的数据结构

#7


引用 5 楼 huntor 的回复:
google的guava库提供BiMap实现双向映射。


这都行! 先搜搜看试试 

不过吧 这种关系楼主可以自己写的

#8


Map<A,B> map1 = new ...;
Map<B,A> map2 = new ...;

#9


Map<A,Map<B,A>>