java - Map does not save values put into it -
i'm creating game , storing images in map has treemap inside it. trying make getimage method check map , see if image's specific key stored. if is, load image early, if not load image resource package , store key map next time getimage method called load image because key in map.
the problem map not save key after it's put it. calling same image should receive console output of image loaded. when references images key map. here class console output of tests set show it's not saving.
package game; import java.awt.image; import java.io.ioexception; import java.io.inputstream; import java.util.map; import java.util.scanner; import java.util.treemap; import javax.imageio.imageio; public class imageloader { public image loadedimage; private map<string, image> images; public imageloader(){ treemap<string, image> map = new treemap<string, image>(); images = map; } public image getimage(string s){ system.out.println(images); try { if(images.containskey(s)){ system.out.println("loaded image."); return images.get(s); } else { system.out.println("not loaded."); classloader myloader = this.getclass().getclassloader(); inputstream imagestream = myloader.getresourceasstream(s); loadedimage = imageio.read(imagestream); images.put(s, loadedimage); system.out.println(images); return images.get(s); } } catch (ioexception e) { system.out.println ("could not load: " + e); } return null; } } here console output when run:
{} not loaded. {resources/asteroid.jpg=bufferedimage@1632847: type = 5 colormodel: #pixelbits = 24 numcomponents = 3 color space = java.awt.color.icc_colorspace@e95a56 transparency = 1 has alpha = false isalphapre = false byteinterleavedraster: width = 600 height = 600 #numdataelements 3 dataoff[0] = 2} {} not loaded. {resources/asteroid.jpg=bufferedimage@1fc6e42: type = 5 colormodel: #pixelbits = 24 numcomponents = 3 color space = java.awt.color.icc_colorspace@e95a56 transparency = 1 has alpha = false isalphapre = false byteinterleavedraster: width = 600 height = 600 #numdataelements 3 dataoff[0] = 2} {} not loaded. {resources/asteroid.jpg=bufferedimage@8ee016: type = 5 colormodel: #pixelbits = 24 numcomponents = 3 color space = java.awt.color.icc_colorspace@e95a56 transparency = 1 has alpha = false isalphapre = false byteinterleavedraster: width = 600 height = 600 #numdataelements 3 dataoff[0] = 2} {} not loaded. {resources/alien-ship.png=bufferedimage@1fe1feb: type = 6 colormodel: #pixelbits = 32 numcomponents = 4 color space = java.awt.color.icc_colorspace@e95a56 transparency = 3 has alpha = true isalphapre = false byteinterleavedraster: width = 45 height = 45 #numdataelements 4 dataoff[0] = 3} is there way can have save values , reference map correctly?
i suspect you're getting new imageloader each time.
Comments
Post a Comment