java如何将1个list存入缓存中并在缓存在修改数据

2025-06-26 22:31:55
推荐回答(1个)
回答1:

public class Test2 {

public static void main(String[] args) {
try {
  List list=new ArrayList<>();
  //模拟传过来的值
  int i=0;
 while (true) {
   Long time= new Date().getTime();
   //将当前时间与值拼接成字符串 保存到list
   list.add("value"+i+","+time);
   //调用处理方法
   processing(list);
   i++;
   //模拟每次传入的时间长度
   Thread.sleep(3000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 public static void processing(List list){
            //第一个存入的值
  String src1=list.get(0);
  //最后一个存入的值
  String src2=list.get(list.size()-1);
  //通过 转换成数组
String [] c1=  src1.split(",");
String [] c2=  src2.split(",");
//拿到第一个存入的 时间字符串 转换成 Long
Long l1 = Long.parseLong(c1[1]);
//拿到最新的 时间字符串 转换成 Long
Long l2 = Long.parseLong(c2[1]);
//如果大于等于30000毫秒就说明了过了30秒清空
if((l2-l1)>=30000){
list.clear();
}
    System.out.println("每次的值"+src2);
     System.out.println("是否30秒清空"+(list.size()==0));
}
}


/*******************************第二种方式*************************************/

public class Test2 {
//定义一个全局变量 用于接收时间
private static Long time=0L;
public static void main(String[] args) {
try {
  List list=new ArrayList<>();
  //模拟传过来的值
  int i=0;
 while (true) {
 //如果list 是在清空状态那么就创建个时间为第一次时间
 if(list.size()==0){
  time= new Date().getTime();
  }
  //将字符串 保存到list
   list.add("value"+i);
   //调用处理方法 ,没次传入一个当前存入对象的时间
   processing(list,new Date().getTime());
   i++;
   //模拟每次传入的时间长度
   Thread.sleep(3000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 public static void processing(List list ,Long times){
           // 当前时间 - 第一次存入的时间  大于等于 30000毫秒 
     //就是过了 30秒执行 清空操作
if((times-time)>=30000){
list.clear();
}
for (String ls:list) {
System.out.println("每次的值"+ls);
}
 System.out.println("是否30秒清空"+(list.size()==0));
}
}

我没有redis  只能模拟一个 你看下 其实 你就多了一步 从缓存中取值 判断不能 等于 30000毫秒 因为 时间会有所偏差 可能大于 所以 大于等于,你要是觉得 毫秒太长你可以 转换成秒存入 在计算


第二种 的话 你的程序 可能不需要太大改掉