Jdk8关于hashmap的新特性

文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。

相关文章:

  1. LeetCode:55. Jump Game(跳远比赛)
  2. Leetcode:300. Longest Increasing Subsequence(最大增长序列)
  3. LeetCode:560. Subarray Sum Equals K(找出数组中连续子串和等于k

 1) 关于jdk8中统计字符出现的个数,比较简便的方式,只在jdk8中可以使用,jdk7就不行!

package leetcode;

import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @author zhangyu
 * @date 2018/12/11 10:01
 **/
public class ListTest {
    @Test
    public void HashMapTest() {
        int[] arr = {1, 2, 3, 1, 1, 2, 4, 6};
        HashMap map = new HashMap<>();
        for (int num : arr) {
            map.put(num, map.getOrDefault(num, 0) + 1);
            /*if (!map.containsKey(num)) {
                map.put(num, 1);
            } else {
                map.put(num, map.get(num) + 1);
            }*/
        }
        for (int key : map.keySet()) {
            System.out.println(key + "--" + map.get(key));
        }
    }
}

时间复杂度:O(n)

空间复杂度:O(n)


2)  在jdk8中有第三种方式,利用stream的流:

package com.zhang.computetime;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * 统计出现次数
 *
 * @author: zhangyu
 */
public class DemoStatistic {

    @Test
    public void testDemoStatistic() {
        List list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 2, 3, 1));

        Map map = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        for (int key : map.keySet()) {
            System.out.println(key + ":" + map.get(key));
        }
    }
}

时间复杂度:O(n)

空间复杂度:O(n)

你可能感兴趣的:(java基础,leetcode)