所以是的,我只是想看看是否有一种更优雅的方式来做我下面要做的事情(请记住,我想要与 POJO(普通 Java 对象)相关的答案,因为这个问题是J2ME 相关,因此没有泛型和现代数据结构仅在 Java 1.5 及更高版本中发现):
假设我有一个对象 MyImage,它只是一个简单的 bean 对象,它填充了来自对我的服务器的网络调用的数据。它包含的只是关于与我的应用程序相关的所述图像的元数据,更重要的是,它包含一个唯一标识符,用于构造 URL 以便从我的服务器获取该对象的图像。当我向它们发出请求时,我经常会收到一组新的对象,其中一些与以前的请求相同。
现在,即使我能够下载图像,问题也出现在如何缓存图像数据时,当我收到一组新的 MyImage 对象时,我将它们与我的缓存进行交叉引用,并且只保留图像那个 MyImage 对象,如果它已经被下载。换句话说,当我将下载的图像保存到我的 Hashtable 缓存中时,我使用构造的 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;
}
我想知道这听起来是否合法,还是可以以更好更有效的方式完成?