将数组插入Map时出现UnsupportedOperationException

问题描述

将数组插入Map时,出现UnsupportedOperationException。地图输入正确。有什么适当的方法可以正确插入并返回数据?

    public static Map<String,ProductClassperiodData[]> getPeriodsByAgreement(String[] productClassIds,String agreementId) 
    {
        Map data = Collections.EMPTY_MAP;
        for (int i = 0; i < productClassIds.length; i++)
        {
            ProductClassperiodData[] periodData = getInstance().getProductClassperiodsByAgreement(productClassIds[i],agreementId);
            data.put(String.valueOf(i),periodData);
        }
        return data;
    }

解决方法

Collections.EMPTY_MAP是不可变的,因此不支持此操作。

/**
 * The empty map (immutable).  This map is serializable.
 *
 * @see #emptyMap()
 * @since 1.3
 */
@SuppressWarnings("rawtypes")
public static final Map EMPTY_MAP = new EmptyMap<>();

代替使用

Map<String,ProductClassPeriodData[]> data = new HashMap<>();