使用泛型将泛型类型的对象添加到地图中

ᴘᴀɴ*_*ᴛɪs 3 java generics

我有三张地图:

Map<Integer,ArrayList<ItemType1>> map1;
Map<Integer,ArrayList<ItemType2>> map2; 
Map<Integer,ArrayList<ItemType3>> map3; 
Run Code Online (Sandbox Code Playgroud)

我经常想在地图中查找一个键,并在其ArrayList值中添加一个项目.我想要的是将作为参数地图的方法Map<Integer,ArrayList<T>>(与通用类型T的ArrayList值),一键添加和T型的项目添加到地图中.

理论上是这样的(我知道这不是Java代码):

private void addToListInMap(Map<Integer,ArrayList<T>> map,Integer keyValue, T itemToAdd){
    ArrayList<T> listOfItems= map.get(keyValue);
    if(listOfItems == null){
       listOfItems= new ArrayList<T>();
       map.put(keyValue, listOfItems);
    }
    listOfItems.add(itemToAdd);
}
Run Code Online (Sandbox Code Playgroud)

如何使用泛型实现这样的效果?

Mak*_*oto 5

这并不是非常困难:将泛型类型作为方法的类型参数提供.

您缺少的所有代码都是它的类型参数.然后,它应该"正常工作".

private <T> void addToListInMap(Map<Integer, ArrayList<T>> map,
                               Integer keyValue, T itemToAdd) {
    ArrayList<T> listOfItems = map.get(keyValue);
    if (listOfItems == null) {
        listOfItems = new ArrayList<T>();
        map.put(keyValue, listOfItems);
    }
    listOfItems.add(itemToAdd);
}
Run Code Online (Sandbox Code Playgroud)