如何在随机选择后从数组中删除字符串?Java的

Rya*_*yan 0 java arrays string random

我是从一个数组中随机选择一个字符串,在选中它之后我想制作它以便我不能再次选择该字符串.我应该"删除"它还是有更好的方法?

这是我随机选择它的代码,

position = positionList[(int) (Math.random() * positionList.length)];
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 5

如果您使用ArrayList而不是使用,删除将是更好的选择array.因为在数组的情况下,你必须重新调整它的大小(这意味着你必须每次创建一个新的数组 - 致命的想法.避免它),或者设置选择的索引null.

但是这种方法(设置null)的问题在于,您可能需要多次进行随机选择以获得一个有效的随机索引,尤其是当您只剩下1有效索引时.因此,最好使用a List,并从中删除所选元素.

List<String> list = new ArrayList<String>();  

// Populate your list.

Collections.shuffle(list);        // Shuffle the list.
String random = list.remove(0);   // Will remove the first element
Run Code Online (Sandbox Code Playgroud)

请注意,如果你想要原版ArrayList,后来的原版,那么你可能会复制它.