我正在尝试从地图中读取列表并尝试将数据添加到列表中。我收到 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)
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)
为了解决这个问题。
| 归档时间: |
|
| 查看次数: |
2319 次 |
| 最近记录: |