我正在尝试制作一个递归的HashMap数据结构:
public HashMap<Character, HashMap> root;
root中的HashMap
也是<Character, HashMap>
类型。这会抛出原始类型警告,因为里面的HashMap没有参数化。我想不出一种方法来消除这些警告,因为任何明确参数化HashMap
的尝试都不会因为它的递归性质而停止。有什么建议吗?
谢谢!
答案 0 :(得分:6)
宣告:
class MyHashMap extends HashMap<Character, MyHashMap> { }
定义:
MyHashMap root;
声明接口:
interface RecursiveMap<K> extends Map<K, RecursiveMap<K>> { }
宣布实施:
class RecursiveHashMap<K> extends HashMap<K, RecursiveMap<K>> implements RecursiveMap<K> { }
class RecursiveTreeMap<K> extends TreeMap<K, RecursiveMap<K>> implements RecursiveMap<K> { }
定义:
RecursiveMap<Character> root = new RecursiveHashMap<Character>();
RecursiveMap<Character> root2 = new RecursiveTreeMap<Character>();
答案 1 :(得分:0)
您不确定内部Map
的泛型类型,然后使用下面的代码。
始终使用接口进行声明。
如果以后您想要更改root
类型的TreeMap
,那么您可以轻松完成。
Map<Character, Map<Character,Object>> root=new HashMap<Character, Map<Character,Object>>();
答案 2 :(得分:0)
我认为拥有递归Map并不可思议,因为在任何给定的时间点,你可能想要某种类型的对象类型与Map不同,否则它将具有infinte depth(没有感)。 尝试使用:
Map<Character, Map<Character, Object>
,或