我搜索一种方法将x元素从地图复制到另一个地图。 我试过这段代码
private void newMapElement( Map<?, ?> userMap, Map<?, ?> newUserMap, int maxSize)
{
int i = 0;
for ( Map.Entry<?, ?> entry : userMap.entrySet() )
{
newUserMap.put( entry.getKey(), entry.getValue() );
i++;
if ( i == maxSize)
{
break;
}
}
}
但是java似乎不喜欢put。
有什么想法吗?
答案 0 :(得分:3)
你必须将? super T
用于 newUserMap ,因为带有超级(带有上边界的通配符)的通配符可以让你在地图中添加元素,你的代码应该如下所示:
private <T> void newMapElement( Map<? extends T, ? extends T> userMap, Map<? super T, ? super T> newUserMap, int maxSize)
{
int i = 0;
for ( Map.Entry<? extends T, ? extends T> entry : userMap.entrySet() )
{
newUserMap.put( entry.getKey(), entry.getValue() );
i++;
if ( i == maxSize)
{
break;
}
}
}