发布网友 发布时间:2022-04-24 15:21
共2个回答
热心网友 时间:2022-04-27 05:28
HASHMAP是一个散列结构,复杂度是O(1)(散列得好的Map),它是根据Key的HashCode(哈希码,Object类就有这个HashCode的方法,你也可以根据你要散列的对象重写它),生成对应的地址。这个HashCode如果没有冲突(就是多个Key生成相同的HashCode),那么在Map中,当找这个Key时,对应的Value就是唯一的(否则不唯一)。所以它的排序是跟据你的Key的HashCode排的,当然跟输入顺序不一样追问可是我要插入的东西有的是String、int有的是数组,这样的话,有办法确定HashMap的排序么?追答可以是可以,只要你对它们的HashCode()方法重写一次,按你想排的写返回值就行了.
比如你写的算法是想要“13”排第一的,那你就写return 13.equals(s)?1:......这个安排比较复杂,而且没有意义。你要排序就要对应的Map就行了(查查JDK文档)。
还有,使用数组返回的hashCode我不知怎么定义,你最好写一个结构类,再放入一个数组,然后重写hashCode();
热心网友 时间:2022-04-27 06:46