java - 使用通用将 x 元素从 map 复制到另一个 map

标签 java generics

我寻找一种将 x 元素从 map 复制到另一个 map 的方法。 我试过这段代码

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。

有什么想法吗?

最佳答案

你必须使用newUserMap 的 super T 作为带有 super 的通配符(带上限的通配符)将允许您将元素添加到您的 map 中,您的代码应该如下所示:

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;
            }
    }
}

关于java - 使用通用将 x 元素从 map 复制到另一个 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14378821/

相关文章:

c++11 - 使用捆绑属性 boost 图形库

java - permission.android.MANAGE_USB 在 Jellybean 中有效,但在 Lollipop OS 中无效

tomcat和jre设置

java - 在Java中将函数作为参数传递给方法并返回其返回值?

generics - Swift 2.0 版本的 struct GeneratorOf<T>

java - 使用 ObjectMapper 反序列化到参数化类时,甚至使用 TypeReference 和 TypeFactory 时出现 ClassCastException

java - 具有昂贵的自定义键功能的列表的最大值

java - 提供者递归问题

java - 使用反射更改静态最终 File.separatorChar 进行单元测试?

C# DAL 返回泛型 List<T>