首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混洗ArrayList的一些元素,而修复其余的元素和混洗的元素必须混洗,直到每个元素获得不同的索引

混洗ArrayList的一些元素,而修复其余的元素和混洗的元素必须混洗,直到每个元素获得不同的索引
EN

Stack Overflow用户
提问于 2014-07-16 13:13:23
回答 1查看 700关注 0票数 0

如何在ArrayList中仅混洗一些元素并修复其余元素我有一个包含锁定和解锁值的ArrayList,我想只混洗未锁定的元素并修复锁定的元素。

我遵循了这个Java: Exclude array index in shuffle,现在我的解锁数组列表被打乱了,但我注意到一些元素在打乱时得到了相同的索引。我的要求是在打乱后每个元素在数组列表中必须得到不同的索引,即原始数组列表元素的索引一定不能与打乱的数组列表元素的索引相匹配

EN

回答 1

Stack Overflow用户

发布于 2014-07-16 13:55:32

假设您需要保持锁定项的位置(索引)不变,您可以尝试这样做。首先,将所有的unlockedItems保存在单独的ArrayList中。假设您的原始列表是项目

代码语言:javascript
复制
ArrayList<T> unLockedItems = new ArrayList<T>();
for(T item : items)
{
   if(!item.isLocked)
      unLockedItems.add(item);
}

现在,您有了未锁定项的列表;

然后对未锁定的项进行混洗

Collections.shuffle(unLockedItems)

然后,您已经将初始的未锁定项替换为随机排列的未锁定项

代码语言:javascript
复制
for(T item : items)
{
   if(!item.isLocked)
   {
      int pos = items.indexOf(item);
      items.remove(pos);
      items.add(pos, unLockedItem.get(O));
      unlockedItem.remove(0);
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24772651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档