I had a list of words which I wanted to shuffle in random order. When I tried swapping random elements of the list, I needed two random numbers and ensure they are not equal. Was taking a lot of time.
But here is a better way
What we are doing here is,
But here is a better way
private ArrayList shuffleWordList(ArrayList wrdList) {
ArrayList lst = new ArrayList();
ArrayList tempList = (ArrayList) wrdList.clone();
int sz = wrdList.size();
for (int i = 0; i < sz; i++) {
int listSize = tempList.size();
int n = random.nextInt(listSize);
lst.add(tempList.get(n));//fill random word into new list
tempList.remove(n);//remove selected word
}
return lst;
}
What we are doing here is,
- Copy the list into a temporary list - tempList
- Create another empty list- lst
- Select one random word from temporary list
- Add this word to new list
- Remove the word from temporary list