java问题:怎么保存最近的N个数,新数添加的同时删除最旧的数,一直保留N个最近的数,数组可以实现吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java问题:怎么保存最近的N个数,新数添加的同时删除最旧的数,一直保留N个最近的数,数组可以实现吗?相关的知识,希望对你有一定的参考价值。
就想坐电梯一样,一直有人上,一直有人下,电梯上的人数一直是N个
不一定是数组,简便一点的就行
public class Save
private final int n = 5;// 确定数组大小,即要保存几个数
private int[] a = new int[n];// 创建数组
private int x = 0;// 指定可替换位置
// 方法:添加
public void add(int y)
if (x == n) x = 0;
a[x] = y;
x++;
// 方法:显示数组
public void display()
for(int i=x;i>0;i--)
System.out.print(a[i-1] + " ");
for(int j=n;j>x;j--)
System.out.print(a[j-1] + " ");
System.out.println();
可以使用下面的类进行测试:
public class Test
public static void main(String[] args)
Save s = new Save();
s.add(1);
s.add(2);
s.add(3);
s.add(4);
s.add(5);
s.add(6);
s.add(7);
s.display();
输出结果为:7 6 5 4 3 参考技术A import java.util.ArrayList;
import java.util.List;
/**
*不清楚为什么显示不能全面,你知道留下言,我可以给你一下代码
* 这个使用方式你可以控制 如果你不想要打印是否添加或者移除成功你就可把所有的System输
*出语句注销掉
* 你使用这个类的时候可以确保 你的元素添加或者移除到底成功没有 如果你想要添加更多只需要把isOutIndex()
* 方法里面的10改成更大,这样当你添加的时候 你就可以能看到是否添加进去
*/
public class Test
private List<Integer> list = new ArrayList<Integer>();
// 添加元素
// 在你添加元素的时候首先判断是否满了,如果满了就删除掉第一个
// 然后添加到最后一位
public void addNum(int num)
if (isOutIndex())
if (list.add(num))
System.out.println(本回答被提问者和网友采纳 参考技术B 这就像是必定含N个元素的队列,可以用循环数组做,定义一个含N个变量的数组,设置一个变量p,指向下一次插入的位置,每次插入后,p=(p+1)%N
当p超过数组的最后一个位置时,又回到第一个位置。
以上是关于java问题:怎么保存最近的N个数,新数添加的同时删除最旧的数,一直保留N个最近的数,数组可以实现吗?的主要内容,如果未能解决你的问题,请参考以下文章