java - 适当的模式来跟踪 N 个最近的值

标签 java design-patterns

<分区>

我想保存 5 个最近的 int 值。下面的代码使用 int[] savedValues 和当前索引计数器存储值。

public class MyBuffer {

    private final int BUFFER_SIZE = 5;
    int[] savedValues = new int[BUFFER_SIZE];
    int index  = 0;
    boolean isInitialCycle = true;


    public void save(int value){
        savedValues[index] = value;
        index++;
        if(index == BUFFER_SIZE){
            index = 0;
            isInitialCycle = false;
        }
    }

    public Integer restore(int stepsBack){
        if(( isInitialCycle && stepsBack > index ) || stepsBack > BUFFER_SIZE){
            return null;
        }
        int recordIndex = ( BUFFER_SIZE + index - stepsBack ) % BUFFER_SIZE;
        return savedValues[recordIndex];
    }    
}

什么是跟踪最新值的更简洁的方法?

最佳答案

您可以使用 java 中内置的 LinkedList 类。

LinkedList<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
Integer mostRecent = queue.getLast()//Gives most recent element
Integer leastRecent = queue.geFirst()//Gives least recent element

//To add new element if the buffer reaches
queue.removeFirst();
queue.add(3);

关于java - 适当的模式来跟踪 N 个最近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47090613/

相关文章:

java - 如何将数组列表的成员与字符串进行比较?

java - 在 Java 中从目录内的不同目录导入

objective-c - Objective-C 中的调解器模式 : Controller objects to perform calculations etc.

Java 抽象工厂 - 单例

Flutter状态管理-使用的架构

java - 用于 spring-boot 应用程序的嵌入式 Tomcat 目录列表

java - 如何在JSP中使用空键获取Map值

java - 从 Java 创建 OGG 文件

javascript - JS 模式提供函数名称作为字符串

ios - 如何检查单例是否已经初始化?