Так что да, я просто пытаюсь понять, есть ли более элегантный способ сделать то, что я собираюсь сделать ниже (помните, что я хотите POJO (простые Java-объекты Java), так как эта проблема связана с J2ME, поэтому никаких дженериков и современных структур данных не обнаружено в Java 1.5 и выше):Java pojo - утилизация кэшированных значений Hashtable после итерации через новый сбор данных
Предположим, у меня есть объект 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;
}
мне интересно, если это звучит законно, или это может быть сделано в лучшем более эффективным способом?
код заменяет старый кеш новым кешем, который содержит только изображения, которые необходимо сохранить. поэтому он обрезает старый кеш. – jtahlborn
FYI, значения для uniqueId предварительно определены и заданы в камне, все вычисления выполняются на бэкэнд для каждого возвращенного изображения. –