gpt4 book ai didi

Java pojo - 迭代新数据集合后回收缓存的哈希表值

转载 作者:行者123 更新时间:2023-12-01 06:21:07 28 4
gpt4 key购买 nike

所以,是的,我只是想看看是否有一种更优雅的方式来完成我下面要做的事情(请记住,我想要 POJO(普通旧 Java 对象)相关的答案,因为这个问题与 J2ME 相关,因此没有泛型和现代数据结构仅在 Java 1.5 及更高版本中找到):

假设我有一个对象 MyImage,它只是一个简单的 bean 对象,它填充了来自对我的服务器的网络调用的数据。它包含的只是与我的应用程序相关的所述图像的元数据,更重要的是,它包含一个唯一标识符,用于构造 URL,以便从我的服务器获取该对象的图像。当我向这些对象发出请求时,我经常会收到一组新的对象,其中一些与以前的请求相同。

现在,即使我能够下载图像,问题也出现在如何缓存图像数据,当我收到一组新的 MyImage 对象时,我将它们与我的缓存交叉引用并只保留该 MyImage 对象的图像(如果已下载)。换句话说,当我将下载的图像保存到哈希表缓存时,我使用构造的 URL (MY_IMAGE_SERVER+myImageUniqueId) 来键入图像数据。当我获得一组新的 MyImage 对象时,当前我执行以下操作:

 Hashtable imgs = getImages();

//If we have cached images, we should see which ones to carry over.
if(imgs.size() > 0){
Hashtable newImgs = new Hashtable();
for(int i = 0; i < myImages.length; i++){
MyImage mi = myImages[i];
if(mi != null && mi.hasImage()){
//Check if we have the MD5 URL
if(imgs.containsKey(IMG_URL_PATH + mi.getUniqueId())){
//Place in new hashtable
newImgs.put(IMG_URL_PATH + mi.getUniqueId(), imgs.get(IMG_URL_PATH + mi.getUniqueId()));
}
}
}
_bannerImgs = newImgs;
}

我想知道这听起来是否合法,或者可以以更好更有效的方式完成吗?

最佳答案

跟进

根据注释中代码的假定用途(如下),您的做法似乎是合理的,但您可以进行一些小的优化。将代码的相关部分更改为:

    // Check if we have the image in our cache
String key = IMG_URL_PATH + mi.getUniqueId();
Object image = imgs.get(key);
if (image != null) {
// Carry over to new cache
newImgs.put(key, image);
}

注意:

  1. 创建/使用局部变量可以避免创建 key 字符串 3 次。
  2. 使用 get 而不是 contains 可以消除一次哈希表查找。

但是,这是否会对系统性能产生显着影响是值得怀疑的……除非 getUniqueId() 方法做了一些愚蠢的事情,比如每次调用它时计算 MD5 和。 (显然事实并非如此。)

无论性能如何,我都会进行此更改,因为它使代码更易于阅读......我认为。

关于Java pojo - 迭代新数据集合后回收缓存的哈希表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4928061/

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