将元素添加到列表时java.lang.UnsupportedOperationException

时间:2014-11-10 20:38:55

标签: java

对于字符串" a3tx2z"这个输出应该是" attttxzzz"或者对于" 12x"它应该是" 2xxx"。我检查了一切,他们工作。但是当我想打印" ttt"在3的位置,第28行java.lang.UnsupportedOperationException有一个l.add(i, s1);。这有什么不对?

package xyz;

import java.util.Arrays;
import java.util.List;

public class xyz {

    public static void main(String[] args) {

        xyz n = new xyz();
        n.blowup("a3tx2z");

    }

    public String blowup(String str){

        String[] array = str.split("");
        List<String> l = Arrays.asList(array);

        for(int i=0; i<l.size(); i++){
            String s1 = l.get(i);
            if(s1.matches("-?\\d+(\\.\\d+)?")){
                String s2 = l.get(i+1);
                if(!(s2.matches("-?\\d+(\\.\\d+)?"))){
                    int t = Integer.parseInt(s1);
                    while(t>0){
                       l.add(i, s1);
                       t--;
                    }
                }
            }
    }
        for(String x: l){
            System.out.print(x);
        }
        return "";
    }

}

1 个答案:

答案 0 :(得分:3)

你得到Arrays.asList返回的List,但它只是一个数组的包装器,所以你不能add任何东西。

  

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

如果您必须add,请从该列表中创建另一个ArrayList

List<String> l = new ArrayList<String>(Arrays.asList(array));