Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不支持的操作异常-从映射中提取列表并向映射中添加数据_Java - Fatal编程技术网

Java 不支持的操作异常-从映射中提取列表并向映射中添加数据

Java 不支持的操作异常-从映射中提取列表并向映射中添加数据,java,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.BeanUti

我正在尝试从地图中读取列表,并尝试向列表中添加数据。我得到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());



    }

}
项目

Arrays.asListit生成固定大小的列表。因此,您无法在该列表中添加或删除元素

这就是原因

pkgitjj.add(new Item());
抛出UnsupportedOperationException

您可以替换:

packageMap.put(it.getBillingIdentifier(),Arrays.asList(it))
与:

要解决此问题。

Arrays.aslist它会生成一个固定大小的列表。因此,您无法在该列表中添加或删除元素

这就是原因

pkgitjj.add(new Item());
抛出UnsupportedOperationException

您可以替换:

packageMap.put(it.getBillingIdentifier(),Arrays.asList(it))
与:

要解决此问题。

Arrays.aslist它返回一个固定大小的列表。因此,此代码将失败:

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

new ArrayList<>(Arrays.asList(it)
相反-这将创建一个新的可调整大小的ArrayList。

Arrays.asListit返回一个固定大小的列表。因此,此代码将失败:

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

new ArrayList<>(Arrays.asList(it)

相反-这将创建一个新的可调整大小的ArrayList。

添加完整的stacktrace PleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleasePleas如标题所示的地图?项目和项目列表是如何定义的?列表不是不可修改的。它是固定大小的。您仍然可以在列表中设置所需的任何值,但不能添加或删除元素。列表不是不可修改的。它是固定大小的。您仍然可以在列表中设置任何想要的值,但不能添加或删除元素。