在Java中映射泛型

Ami*_*hum 2 java generics

我似乎对Java Generics有一些误解,我希望你能帮助我.我试图像这样创建一个地图:

Map<Debater, int>
Run Code Online (Sandbox Code Playgroud)

(Debater是我声明的接口)但java抱怨int,所以我做了:

Map<Debater, Integer>
Run Code Online (Sandbox Code Playgroud)

我想这是因为int不是一个类,而Integer是,这是正确的吗?

此外,现在我得到一个Debater,我需要在地图中添加1到它的值.我怎么做?

Boz*_*zho 7

是的,你是对的.

至于递增:

map.put(debater, map.get(debater) + 1);
Run Code Online (Sandbox Code Playgroud)

自动装箱将负责对象和基元之间的"切换".

请注意,NullPointerException如果您在地图中没有此辩论者的值,则此(如注释中所述)将抛出一个.因此,如果你想做二合一,可以按如下方式重新加工:

map.put(debater, map.containsKey(debater) ? map.get(debater) + 1 : 1);
Run Code Online (Sandbox Code Playgroud)

  • 当地图不包含debater时,这将抛出NullPointerException. (2认同)