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