Java数据结构与算法
文章平均质量分 61
Senpao
这个作者很懒,什么都没留下…
展开
-
为什么给HashMap进行了排序,存放到新的HashMap中的时候依旧无视排序,应该如何处理?
为什么给HashMap进行了排序,存放到新的HashMap中的时候依旧无视排序,应该如何处理? 在上一篇文章中,我们对map中的数据按照value值,进行排序,但是当我们想将排序后的HashMap,存放到新的HashMap中的时候,却发现,新的HashMap依旧无视排序,这里给出解决方法。 **这种问题出现的原因就是由于HashMap的无序性,无论是否已经排序,当放到HashMap中时,都会无序化,因此会出现这种问题,因此这时我们需要使用LinkedHash原创 2021-03-24 11:00:01 · 338 阅读 · 0 评论 -
List排序、Map按照value值排序,以及list如何转换为map,map如何转换为list
List排序、Map按照value值排序,以及list如何转换为map,map如何转换为list在写算法的时候,会频繁的用到list以及map的排序问题,当我们想对list进行排序,我们可以直接使用Collections类中的方法,比如说对list进行降序排列,如下Collections.sort(list,Collections.reverseOrder());其中逗号前的list即为要排序的list,用一个例子来看,如图: list.add(0.3);原创 2021-03-23 10:34:31 · 1267 阅读 · 0 评论 -
遍历HashMap集合的四种基本方式(包括遍历、迭代器、get、Map接口)
遍历HashMap集合的四种基本方式(包括遍历、迭代器、get、Map接口) 遍历HashMap集合一般有四种方式,今天跟大家介绍一下:1.分别遍历key和values,这里调用了import java.util.Set;方法如下: //分别遍历key和values private static void method( HashMap<String,Integer> hm){ //获取所有的key Set<S原创 2021-03-17 00:38:11 · 395 阅读 · 0 评论 -
HashMap的最详细介绍(四)HashMap的四个成员方法详解(put、remove、resize、get)
HashMap的四个成员方法详解(put、remove、resize、get) 在了解HashMap的构造方法之后,就进行实例部分的四个基本的成员方法,也是我平常经常用到的成员方法:增加方法(put): put方法在在实例中可以直接用.put()实现,这里解释一下put方法的源码详细实现步骤: (1)先通过hash值计算出key映射到哪个桶 (2)如果桶上没有碰撞,冲突,则直接插入 (原创 2021-03-16 09:58:45 · 501 阅读 · 0 评论 -
HashMap的最详细介绍(三)HashMap数组容量的算法分析,HashMap面试题,集合类的全部成员及构造方法
HashMap数组容量的算法分析,HashMap面试题,集合类的全部成员及构造方法 我们从上一篇文章的算法开始进行介绍,源代码中使用的是hash与length-1的按位与运算(位运算),而当输入值不是2的n次幂时,由于HashMap的容量必须是2的幂,因此会找到大于等于给定值的最小的2的幂,这可以从源码中得到: static final int tableSizeFor(int cap) { int n = cap - 1; n |= n &g原创 2021-03-15 11:02:28 · 494 阅读 · 0 评论 -
HashMap的最详细介绍(二)HashMap的面试题,HashMap扩容,put方法流程图,继承关系以及集合类的成员
HashMap的面试题,HashMap扩容,put方法流程图,继承关系以及集合类的成员 在了解完上一篇HashMap的文章后,同学在面试时,面试官可能会问以下几个问题: 1.当两个对象的hashCode相等时会发生什么? 2.何时会发生哈希碰撞,什么是哈希碰撞,如何解决哈希碰撞? 3.如果两个键的hashCode相同,如何存储键值对? 这样的问题比较简单,答案如下,不理解的可以自己原创 2021-03-14 10:52:40 · 335 阅读 · 0 评论 -
HashMap的最详细介绍(一)HashMap的介绍,特点,存储方式以及hashCode()的用法
HashMap的最详细介绍(一)HashMap的介绍,特点,存储方式以及hashCode()的用法 HashMap是基于哈希表的Map接口实现,是以key-value存储形式存在的,即主要用来存放键值对,HashMap的实现不是同步的,这意味着它不是线程安全的,它的key,value都可以为null,此外,HashMap中的映射不是有序的。 在JDK1.8之前,HashMap由数组+链表组成,数组是HashMap的主体,链表则是为了解决哈希冲突(两个对象调用的hashCode方法计算的哈原创 2021-03-13 14:55:00 · 1319 阅读 · 0 评论