如何在ArrayList中仅混洗一些元素并修复其余元素我有一个包含锁定和解锁值的ArrayList,我想只混洗未锁定的元素并修复锁定的元素。
我遵循了这个Java: Exclude array index in shuffle,现在我的解锁数组列表被打乱了,但我注意到一些元素在打乱时得到了相同的索引。我的要求是在打乱后每个元素在数组列表中必须得到不同的索引,即原始数组列表元素的索引一定不能与打乱的数组列表元素的索引相匹配
发布于 2014-07-16 13:55:32
假设您需要保持锁定项的位置(索引)不变,您可以尝试这样做。首先,将所有的unlockedItems保存在单独的ArrayList中。假设您的原始列表是项目
ArrayList<T> unLockedItems = new ArrayList<T>();
for(T item : items)
{
if(!item.isLocked)
unLockedItems.add(item);
}现在,您有了未锁定项的列表;
然后对未锁定的项进行混洗
Collections.shuffle(unLockedItems)
然后,您已经将初始的未锁定项替换为随机排列的未锁定项
for(T item : items)
{
if(!item.isLocked)
{
int pos = items.indexOf(item);
items.remove(pos);
items.add(pos, unLockedItem.get(O));
unlockedItem.remove(0);
}
}https://stackoverflow.com/questions/24772651
复制相似问题