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

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

  • 问题 解决问题的方式有多种,但是你需要在程序运行时选择(或是转换)这些方法。 解决方案 在策略对象(Strategy objects)中封装你的算法。 例如,给定一个未排序的列表,我们可以在不同情况下改变排序算法。 基类 StringSorter = (algorithm) -> sort: (list) -> algorithm list 策略 bubbleSort = (list) -

  • 应用场景 一个商场收银软件,营业员根据客户所购买的商品的单价和数量,向客户收费 用两个文本框来输入单价和数量,一个确定按钮来算出每种商品的费用,用个列表框来记录商品的清单,一个标签来记录总计,一个重置按钮来重新开始。 double total = 0.0d; private void btn0k_Click(object sender, EventArgs e) { double