java map 里怎么才能放不同类型的key,比如 put(1, 100),put("1", "满分")
public class MyDictionary<K, V> implements DictionaryInterface<K, V> {
private Map<K, V> map;public MyDictionary() { map = new HashMap<>();}public void add(K key, V value) { map.put(key, value);}public V get(K key) { return map.get(key);}
}
public class Main {
public static void main(String[] args) { MyDictionary<Integer, String> dictionary = new MyDictionary<>(); dictionary.add(1, 100); dictionary.add("1", "满分") // 报错了}
}
你的代码在尝试将一个字符串键("1")放入一个已定义为接收 Integer
类型键的 MyDictionary
对象时,会报错。这是因为 MyDictionary
的类型参数 K
和 V
在实例化时被设定为 Integer
和 String
,所以该字典只能接收 Integer
类型的键和 String
类型的值。
如果你想要在一个字典中存储不同类型的键,你需要使用通配符泛型(Wildcard Generics)。通配符泛型允许你创建更加灵活的代码,可以处理未知类型的对象。在你的情况下,你可以使用 ?
作为键的类型参数,这样你的字典就可以接受任何类型的键了。但是请注意,尽管键的类型变得灵活,但值的类型仍然需要明确指定。
下面是一个修改后的 MyDictionary
类,它可以接受不同类型的键:
public class MyDictionary<V> { private Map<Object, V> map; public MyDictionary() { map = new HashMap<>(); } public void add(Object key, V value) { map.put(key, value); } public V get(Object key) { return map.get(key); }}
然后你可以像这样使用它:
public class Main { public static void main(String[] args) { MyDictionary<String> dictionary = new MyDictionary<>(); dictionary.add(1, "100"); dictionary.add("1", "满分"); System.out.println(dictionary.get(1)); // 输出 "100" System.out.println(dictionary.get("1")); // 输出 "满分" }}
在这个版本中,MyDictionary
的键被设定为 Object
类型,这意味着它可以接受任何类型的对象作为键。但是,值仍然是特定类型 V
,这样你可以保持类型安全。注意,当你从字典中检索值时,你需要将键强制转换为正确的类型,否则可能会遇到 ClassCastException
。
请注意,尽管上述代码在技术上可以实现你的需求,但在实际编程中,通常不建议在 Map 中使用不同类型的键,因为这可能导致代码难以理解和维护。如果可能的话,最好设计一个更加结构化的数据模型来满足你的需求。
我在泽西岛有一个Rest服务,我正在使用邮递员实现 我在邮递员中得到以下错误:
此方法用于在流程字典中放置key, value对。 语法 (Syntax) put(key,value) 参数 (Parameters) key - 需要添加到流程字典中的密钥。 value - 需要添加到流程字典中的值。 返回值 (Return Value) 没有 例如 (For example) -module(helloworld). -export([start/0]). start
此方法用于向地图添加键值对。 语法 (Syntax) put(key1,value1,map1) 参数 (Parameters) key1 - 这是需要添加到地图的密钥。 Value1 - 这是与key1关联的值,需要将其添加到地图中。 map1 - 这是需要添加键值的映射。 返回值 (Return Value) 带有附加键值的原始地图。 例如 (For example) -module(hel
将指定的值与此Map中的指定键相关联。 如果此Map先前包含此键的映射,则旧值将替换为指定的值。 语法 (Syntax) Object put(Object key, Object value) 参数 (Parameters) 键 - 放入地图的关键 值 - 密钥的关联值 返回值 (Return Value) 插入的返回键值对。 例子 (Example) 以下是此方法的使用示例 - class
HTTP PUT 请求方法创建新的资源或替换请求负载目标资源的表示。 PUT和POST之间的差是,PUT是幂等:调用它一次或多次连续具有相同的效果(也就是没有侧面的效果),在那里连续的相同POST可具有额外的效果,如通过顺序数次。 请求具有正文 是 成功的回应有身体 没有 安全 没有 幂等 是 可缓存 没有 在 HTML 表单中允许 没有 语法 PUT /new.html HTTP/1.1 示例
问题内容: 我讨厌以下模式: 当嵌套图表示多维结构时,此示例仅会刮擦要编写的额外代码的表面。 我确定某个地方可以避免这种情况,但是我在Google搜索中所做的努力没有任何意义。 有什么建议? 问题答案: 的 和从Java 8 有 它返回映射到键的值,或者插入给定的值;如果没有为键映射任何值,则返回null。 如果您需要懒惰的价值评估,