你的代码有很多问题:
在
Arrays.asList返回一个固定大小的列表
从API:
Arrays.asList:返回指定数组支持的固定大小的列表。
你不能
add做到 你不能
remove。你无法在结构上修改
List。
Fix
创建一个
linkedList,支持更快
remove。
List<String> list = new linkedList<String>(Arrays.asList(split));
关于split正则表达式
从API:
String.split(String regex):在给定正则表达式的匹配项周围拆分此字符串。
|是正则表达式元字符;如果要拆分文字
|,则必须将其转义
|为Java字符串文字
"\|"。
固定:
template.split("\|")关于更好的算法
与其
remove一次用一个随机索引调用一个数字,不如生成一个足够的范围内的随机数,然后用List一次遍历一次
listIterator(),并
remove()在适当的索引上调用,这更好。关于如何在给定范围内生成随机但不同的数字,有一些关于
stackoverflow的问题。
这样,你的算法将是
O(N)。



