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

时间:2015-12-11 19:31:22

标签: java

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

<?php                       

    $i=1;
    foreach (!empty (get_field('property_image.$i.')) ) {

    print (' <li data-thumb="<?php the_field('property_image'.$i.'); ?>"> 
             <img src="<?php the_field('property_image'.$i.'); ?> "> 
             </li> ');

    $i++; 

        }

?>

ITEMLIST

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());



    }

}

ITEM

import java.util.List;

public class ItemList {

    public Item item;

    public Item getItem() {
        return item;
    }

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






}

2 个答案:

答案 0 :(得分:3)

Arrays.asList(it)生成固定大小的List。因此,您无法在List添加或删除元素。

这就是

的原因
pkgitjj.add(new Item());

抛出UnsupportedOperationException

您可以替换:

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

使用:

packageMap.put(it.getBillingIdentifier(),new ArrayList<Item>(Arrays.asList(it)))

解决此问题。

答案 1 :(得分:2)

Arrays.asList(it)返回固定大小的列表。因此,此代码将失败:

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

你应该写

new ArrayList<>(Arrays.asList(it)
而不是 - 这会创建一个新的可调整大小的ArrayList。