向ArrayList添加Null时出现UnsupportedOperationException

时间:2014-08-07 17:09:03

标签: java arraylist supercsv

我正在尝试将null元素添加到ArrayList。这是为了使用supercsv忽略列:http://supercsv.sourceforge.net/examples_partial_reading.html我正在处理具有不同数量的标题列的多个csv文件。

csvBeanReader.getHeader(true)返回String []。行headers.add(null);抛出UnsupportedOperationException。为什么?我做错了什么?

List<String> headers = Arrays.asList(csvBeanReader.getHeader(true));

//add null columns to headers
for(int i=0; i<1000; i++){
    headers.add(null);
}

2 个答案:

答案 0 :(得分:3)

你没有java.util.ArrayList,你有一些实现List的东西。此特定List实现不支持通过更改List的大小进行修改。即使您add为实际String,您仍会获得UnsupportedOperationException。来自Arrays.asList javadocs

  

返回由指定数组支持的固定大小的列表。

为了能够添加到List,请将其包装在实际的ArrayList中。

List<String> headers = new ArrayList<>(Arrays.asList(csvBeanReader.getHeader(true)));

答案 1 :(得分:0)

这是因为Arrays.asList返回一个不可变列表。

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...)

当尝试修改时,不可变列表将抛出异常。