UnSupported Operation Exception - 从地图获取列表并将数据添加到地图

Pun*_*cky 2 java

我正在尝试从地图中读取列表并尝试将数据添加到列表中。我收到 java.lang.UnsupportedOperationException。请你让我知道如何解决这个问题

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;




public class ListOperation {

    public static void main(String[] args){



        Map<String,List<Item>> packageMap = new HashMap<String,List<Item>>();
        Item item = new Item();
        item.billingIdentifier =  "pkg1";
        item.name="pkg1";

        Item item1 = new Item();
        item1.billingIdentifier =  "pkg2";
        item1.name="pkg2";

        Item item2 = new Item();
        item2.billingIdentifier =  "pkg3";
        item2.name="pkg3";

        ItemList itemList = new ItemList();
        itemList.setItem(item);

        ItemList itemList1 = new ItemList();
        itemList1.setItem(item1);       

        ItemList itemList2 = new ItemList();
        itemList2.setItem(item2);   

        List<ItemList> itemLists = new ArrayList<ItemList>();
        itemLists.add(itemList);
        itemLists.add(itemList1);
        itemLists.add(itemList2);

        for(ItemList itList:itemLists){
            Item it = itList.getItem();
            if(it != null){
                packageMap.put(it.getBillingIdentifier(),Arrays.asList(it));
            }
        }

  List<Item> pkgitjj = packageMap.get("pkg3");
    pkgitjj.add(new Item());



    }

}
Run Code Online (Sandbox Code Playgroud)

项目清单

import java.util.List;

public class ItemList {

    public Item item;

    public Item getItem() {
        return item;
    }

    public void setItem(Item item) {
        this.item = item;
    }






}
Run Code Online (Sandbox Code Playgroud)

物品

public class Item {
public String name;
public String billingIdentifier;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getBillingIdentifier() {
    return billingIdentifier;
}
public void setBillingIdentifier(String billingIdentifier) {
    this.billingIdentifier = billingIdentifier;
}



}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 6

Arrays.asList(it)产生一个固定大小的List. 因此,您无法向该List.

这就是为什么

pkgitjj.add(new Item());
Run Code Online (Sandbox Code Playgroud)

抛出UnsupportedOperationException

您可以替换:

packageMap.put(it.getBillingIdentifier(),Arrays.asList(it))
Run Code Online (Sandbox Code Playgroud)

和:

packageMap.put(it.getBillingIdentifier(),new ArrayList<Item>(Arrays.asList(it)))
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题。