美文网首页
2021-05-05

2021-05-05

作者: 程博颖 | 来源:发表于2021-05-06 08:43 被阅读0次

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

import java.util.HashMap;

public class Code05_SetAll {

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

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

    public static class MyHashMap<K, V> {
        private HashMap<K, MyValue<V>> map;
        private long time;
        private MyValue<V> setAll;

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

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

        public void setAll(V value) {
            setAll = new MyValue<V>(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

      本文链接:https://www.haomeiwen.com/subject/oedkdltx.html