HashMap使遍历集合查找更效率

效率循环数组

通常我们在匹配数组或者集合的时候经常会无脑的去用多层for循环遍历。【别点我,我就是一个菜鸟】。偶然一次发现,当需要处理遍历匹配两个数组或者集合的时候利用map的效率会比for循环高出几十倍。在这里mark一下。
参照力扣题库第一题。给定一个数组,在里面找出两个数字加起来正好等于目标值。
暴力的写法:

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int [] str = new int[2];
        // 比target大的值可以忽略掉
        for(int i=0;i

使用Map之后的写法

class Solution {
    public int[] twoSum(int[] nums, int target){
        Map colle = new HashMap();
        for(int i=0;i

两种写法性能对比:

耗时 内存消耗
83 ms 37.2 MB
3 ms 37.9 MB

不管从代码可读性上还是性能上,使用HashMap都要远远优于循环遍历。在此mark一下。

顺便推荐一个很好用的类:com.google.common.collect.Maps
这个类下面有一个方法uniqueIndex可以快速便捷的将一个集合转换成HashMap的键值对形式,非常好用!

Map maps = new HashMap<>(Maps.uniqueIndex(neededGoodsArray, new Function() {
                @Nonnull
                @Override
                public Integer apply(String s) {
                    return Integer.parseInt(s);
                }
 }));

需要了解的自行百度哈。

你可能感兴趣的:(学习记录)