gpt4 book ai didi

java - 使用集合缓存数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:16 24 4
gpt4 key购买 nike

所以,我在 java 集合中缓存数据时遇到了问题。当我第一次初始化应用程序时,我会像这样使用下面的函数,

cacheImageAndSounds(0,6);

现在,一旦我从头开始到达第 4 个位置,我想从集合中删除前 3 个元素并缓存下 3 个,即

cacheImageAndSounds(4,10);

但是由于缓存中已经有第 4、5 和 6 张图片,我不想将它们重新放入缓存中,因为它们已经存在,因此我只想下载或获取第 7 到第 10 张图片和声音文件。

我该怎么做,或者我该如何调整我在 map 中缓存数据的算法?

这是我用来在集合中创建图像和声音文件缓存的函数,并进一步使用它根据各种索引值从中检索数据。我以某种方式使用它,以便有意识地设置两个索引并获取填充在集合中的所需数据。

public int cacheImageAndSounds(int startIndex,int lastIndex)
{
for(int i=startIndex;i<lastIndex;i++)
{
aq.ajax(data1.get(i), Bitmap.class, new AjaxCallback<Bitmap>() {
@Override
public void callback(String url, Bitmap object, AjaxStatus status) {
imageFilexxS.put(url, object);
System.out.println("size of imagefile"+imageFilexxS.size());
}
});

aq.ajax(data1.get(i).replace(".png", ".mp3"), File.class, new AjaxCallback<File>() {
@Override
public void callback(String url, File object, AjaxStatus status) {
imageFilexxSm.put(url, object);

System.out.println("size of songfile"+imageFilexxSm.size());

if(imageFilexxSm.size()>=6)
{
update(); //call to the UI
}
}
});
}
return 1;
}

清除缓存并构建新缓存。

public void clearCacheLogic()
{
imageFilexxS.clear();
imageFilexxSm.clear();
}

最佳答案

在进行 ajax 调用之前,看起来您没有缓存 索引 并检查它。有新Set<Integer>称为 processed .和方法一样,

public int cacheImageAndSounds(int startIndex,int lastIndex)
{
for(final int i=startIndex;i<lastIndex;i++)
{
//check if the index is already processed, if not then make the call
if(!processed.contains(i)) {
aq.ajax(data1.get(i), Bitmap.class, new AjaxCallback<Bitmap>() {
@Override
public void callback(String url, Bitmap object, AjaxStatus status) {
imageFilexxS.put(url, object);
System.out.println("size of imagefile"+imageFilexxS.size());
processed.add(i); //once the result comes, mark the index as processed
}
});

aq.ajax(data1.get(i).replace(".png", ".mp3"), File.class, new AjaxCallback<File>() {
@Override
public void callback(String url, File object, AjaxStatus status) {
imageFilexxSm.put(url, object);
processed.add(i); //once the result comes, mark the index as processed
System.out.println("size of songfile"+imageFilexxSm.size());

if(imageFilexxSm.size()>=6)
{
update(); //call to the UI
}
}
});
}
}
return 1;
}

这样,当你调用cacheImageAndSounds(4,10); ,对于第 4、5 和 6 个索引,不会进行 ajax 调用,因为这些索引已经存在于 processed 中。设置

关于java - 使用集合缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16516965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com