1

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はプットが好きではないようです。

何か案が?

4

1 に答える 1

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;
            }
    }
}
于 2013-01-17T12:15:39.863 に答える