2021-05-05

设计有setAll功能的哈希表
put、get、setAll方法,时间复杂度O(1)

import java.util.HashMap;

public class Code05_SetAll {

    public static class MyValue {
        public V value;
        public long time;

        public MyValue(V v, long t) {
            value = v;
            time = t;
        }
    }

    public static class MyHashMap {
        private HashMap> map;
        private long time;
        private MyValue setAll;

        public MyHashMap() {
            map = new HashMap<>();
            time = 0;
            setAll = new MyValue(null, -1);
        }

        public void put(K key, V value) {
            map.put(key, new MyValue(value, time++));
        }

        public void setAll(V value) {
            setAll = new MyValue(value, time++);
        }

        public V get(K key) {
            if (!map.containsKey(key)) {
                return null;
            }
            if (map.get(key).time > setAll.time) {
                return map.get(key).value;
            } else {
                return setAll.value;
            }
        }
    }

}

你可能感兴趣的:(2021-05-05)