当前位置: 首页 > 知识库问答 >
问题:

在java中实现策略模式的条件[关闭]

谭铭
2023-03-14

我的任务是使用策略模式(LFU、LRU和2Q)编写3个缓存实现
在这一点上,我已经编写了LRU实现,无法考虑实现它的条件。

这是我的密码:

import java.util.Map;

@FunctionalInterface
public interface Cache{
    Map<Character,Integer> caching(String key);
import java.util.*;

public class LRUCache implements Cache {
    private final Map<Character, Integer> value;
    private final int capacity;

    public LRUCache(int capacity, Map<Character, Integer> value) {
        this.value = value;
        this.capacity = capacity;
    }

    @Override
    public Map<Character, Integer> caching(String key) {
        Map<String, Map<Character, Integer>> cache
                = new LinkedHashMap<>(capacity, 1.0f, true) {
            protected boolean removeEldestEntry(Map.Entry eldest) {
                return size() > capacity;
            }
        };
        cache.put(key, value);
        return cache.get(key);
    }
}
import java.util.*;

public class CharCounter {
    public Map<Character, Integer> charCounter(String arg) {
        LinkedHashMap<Character, Integer> elements = new LinkedHashMap<>();
        List<Character> chars = new ArrayList<>();
        Cache cache = new LRUCache(100,elements);
        if (/*I can't think of what to write here*/) {
            System.out.println("not cache");
            for (char c : arg.toCharArray()) {
                chars.add(c);
            }
            for (Character element : chars) {
                if (elements.containsKey(element)) {
                    elements.put(element, elements.get(element) + 1);
                } else {
                    elements.put(element, 1);
                }
            }
        }
        return cache.caching(arg);
    }
}

共有1个答案

尹兴生
2023-03-14

您可以最初添加一个计数器来跟踪数据结构中的索引递增,然后如果计数器递增1,您可以将其应用于循环

 类似资料:
  • 我正在学习Java编程。 我的任务是使用策略模式(LFU、LRU和2Q)编写3个缓存实现。在这一点上,我已经编写了LRU实现,无法考虑实现它的条件。 这是我的密码 请帮帮我

  • 本文向大家介绍PHP实现的策略模式示例,包括了PHP实现的策略模式示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现的策略模式。分享给大家供大家参考,具体如下: 个人觉得设计模式只有在实际应用中才能够慢慢的去熟悉,到最后做到心中有模式,事事有模式,哈哈 例如:一个电商首页,可以根据登陆用户的性别不同显示不同的内容,比如广告和商品类别。 传统方法:在程序内部使用多个if,else

  • 主要内容:介绍,实现,Strategy.java,OperationAdd.java,OperationSubtract.java,OperationMultiply.java,Context.java,StrategyPatternDemo.java在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 contex

  • 策略模式 亦称: Strategy 意图 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 问题 一天, 你打算为游客们创建一款导游程序。 该程序的核心功能是提供美观的地图, 以帮助用户在任何城市中快速定位。 用户期待的程序新功能是自动路线规划: 他们希望输入地址后就能在地图上看到前往目的地的最快路线。 程序的首个版本只能规划公

  • 把不变的部分和变化的部分隔开是每个设计模式的主题。 条条大路通罗马。我们经常会遇到解决一件事情有多种方案,比如压缩文件,我们可以使用zip算法、也可以使用gzip算法。其灵活多样,我们可以采用策略模式解决。 一、定义 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 基于策略类模式的程序至少由两部分组成。第一个部分是一组策略类,策略类封装了具体的算法,并负责具体的计算过程。第二个部

  • 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 介绍 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...