问题描述
一个hashtable中,若有key是多个value的,那么把这个key的所有value都存在一个linkedlist里面。我想问,那么现在如果我用getValue(Objectkey),而这个key是有多个value的,那么这个方法返回的是一个value还是一个linkedlist?如果返回的是一个value,那么是哪个value呢?
解决方案
本帖最后由 sshber 于 2014-08-04 01:03:03 编辑
解决方案二:
返回linkedlist,例如:Hashtable<String,List<String>>table=newHashtable<String,List<String>>();List<String>value=table.get("key");
解决方案三:
在一个hashtable中,不存在一个key对应多个value的问题,如果两个对象的equals方法返回true,则会认为是相同的对象,在一个hashtable中是不能有两个equals返回true的key的。我觉得你的意义可能是两个对象的hashcode值相同,这样两个key对应的对象是存在一个linklist中的,但是通过get方法获取的时候,首先是通过hashcode定位,然后再通过equals遍历的。
解决方案四:
key有多个value??是要说可不可以是重复的吗??
解决方案五:
键值对?你知道什么是这样的吗?不存在一个键对应多个值,只有多个键对应相同的值才是可能的,添加的时候,如果键相同,那么不可能添加进去的
解决方案六:
哈希算法怎么可能是同一个Key对应多个Value呢?那样的话是覆盖而不是存成什么LinkList除非自己实现这个功能。另外Hashtable没有getValue方法,楼主从哪里得到这些想法的?
解决方案七:
Hashtabled的hash()是有可能出这种问题的,不同key相同value时,后一次put的value值会把前一次的value覆盖掉,所以只会返回最后一个value。HashMap的hash()会好很多,如果可以的话换了试试。
解决方案八:
楼主一定是搞混了理论上的hash表和jdk中hashtable的实现。只有数据结构课上面才会教你这些个冲突检测,但实际上JDK用的时候完全不需要考虑hash值冲突之后的检测问题。