gpt4 book ai didi

java - HashMap 不保存条目

转载 作者:行者123 更新时间:2023-11-30 03:36:06 25 4
gpt4 key购买 nike

我的问题是,我正在尝试制作一个资源加载器,将过去的纹理保存到 HashMap 中,并以其位置作为键。当它加载包外部的图像时它工作得很好,但当它尝试加载内部图像时它不会保存。

这是我的资源加载器的代码

public Map<String,BufferedImage> loads = new HashMap<String,BufferedImage>();

public BufferedImage loadImage(String imagePath){

BufferedImage temp = new BufferedImage(9, 16, BufferedImage.TYPE_INT_RGB);

String location = imagePath.replaceAll("[.]", "/");
location += ".png";

//internal
if(location.startsWith("CLASS_")){
if(loads.get(location) != null){
System.out.println("OLD");
return loads.get(location);
}else{
location = location.replaceAll("CLASS_", "");
try{
temp = ImageIO.read(this.getClass().getClassLoader().getResource("net/minegeek360/platformer/assets/"+location));
loads.put(location, temp);
}catch(Exception e){System.err.println("CANT LOAD IMAGE");}
System.out.println("NEW | "+temp);
}
//external
}else{
try{
if(loads.get(location) != null){
//System.out.println("LOADED ORIGIONAL IMAGE");
return loads.get(location);
}else{
temp = ImageIO.read(new File("assets/textures/"+location));
//System.out.println("LOADED NEW IMAGE");
}
}catch(Exception e){ e.printStackTrace(); }
loads.put(location, temp);
}

return temp;
}

正如我所说,外部加载工作正常,问题只是内部加载。它正确加载所有图像,所以我知道 BufferedImages 不是问题,这就是为什么我认为它是 HashMaps。

最佳答案

当数据放入 map 时,前缀“CLASS_”将从用作键的位置中删除。

但是,当从 map 中查询数据时,前缀仍然存在。

您能否尝试一下内部部分的代码并提供控制台的输出?

if(location.startsWith("CLASS_")){
location = location.replaceFirst("CLASS_", "");
if(loads.get(location) != null){
System.out.println("OLD");
return loads.get(location);
} else {
try{
temp = ImageIO.read(this.getClass().getClassLoader().getResource("net/minegeek360/platformer/assets/"+location));
System.out.println("Loading image, current size: " + loads.size());
loads.put(location, temp);
System.out.println("Image loaded, new size: " + loads.size());
}catch(Exception e){System.err.println("CANT LOAD IMAGE");}
System.out.println("NEW | "+temp);
}
}

关于java - HashMap 不保存条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848551/

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