Stack Overflow 社区您好,
我在使用 Java 的 HashMap 时遇到了挑战。我有两个 HashMap,map1 和 map2,其中 map1 具有 Float 类型的键,map2 具有 Integer 类型的键。现在,我需要将条目从map1复制到map2。
import java.util.Map;
import java.util.HashMap;
public class Q9 {
public static void main(String[] args) {
Map<Float, String> map1 = new HashMap<>();
Map<Integer, String> map2 = new HashMap<>();
// Adding entries to map1
map1.put(11.1f, "black");
map1.put(12.1f, "brown");
map1.put(13.1f, "Grey");
map1.put(14.1f, "blue");
// Now, I want to copy the entries from map1 to map2 with Integer keys
// map2.putAll(map1); // This line gives a compilation error due to key type mismatch
// How can I convert the Float keys from map1 to Integer keys to successfully copy entries to map2?
}
}
我希望获得有关如何将键从浮点转换为整数的指导,以便我可以成功地将条目从map1复制到map2。任何见解、代码示例或最佳实践都非常有价值。
感谢您的协助!
您可以在将键更改为
map1
后迭代 map2
并将每个条目插入到 Integer
:
for(Map.Entry<Float, String> entry : map1.entrySet())
map2.put(entry.getKey().intValue(), entry.getValue());
迭代条目并转换键值。
for (Map.Entry<Float, String> entry : map1.entrySet()) {
map2.put((int)(float)entry.getKey(), entry.getValue());
}
我们需要双重投射来触发
float
自动拆箱和 int
自动装箱。
或者直接手动拆箱到
int
,然后让编译器自动装箱。
for (Map.Entry<Float, String> entry : map1.entrySet()) {
map2.put(entry.getKey().intValue(), entry.getValue());
}
警告:如果两个或多个
float
值转换为相同的int
值,则任意哪个条目获胜。这就是 HashMap
排序的本质。