【问题标题】:Android Suffle ArrayList of Bitmap keeping the original positionsAndroid Suffle ArrayList of Bitmap 保持原始位置
【发布时间】:2014-06-11 13:31:33
【问题描述】:

我正在尝试编写一个对位图数组进行排序的代码,但我想将位图移动到的位置保留在另一个数组中。为了做到这一点,我正在做如下:

int[] ar = {  1,  2, 3, 7, 12,  4,  5, 13, 8, 9, 11, 10,  6 , 14, 15};
public static ArrayList<Bitmap> shuffleArray(int[] ar, ArrayList<Bitmap> arraybmorig)
{
  Bitmap[] arraybmfinal = new Bitmap[arraybmorig.size()];

  for (int i=0; i<ar.length; i++)
  {

    arraybmfinal[ar[i]] = arraybmorig.get(i); 
  }

  return new ArrayList(Arrays.asList(arraybmfinal));
}

但我的代码效率不高,我想随机化我的固定数组 ar[]... 实现此功能的最佳方法是什么?

提前谢谢!!

【问题讨论】:

    标签: android list random arraylist shuffle


    【解决方案1】:

    据我了解,您想打乱您的 ar 数组,而不是将位图放在 ar 位置。 你至少有两种方法来洗牌:

    private void ShuffleArray(int[] array)
    {
        int index, temp;
        Random random = new Random();
        for (int i = array.length - 1; i > 0; i--){
            index = random.nextInt(i + 1);
            temp = array[index];
            array[index] = array[i];
            array[i] = temp;
        }
    }
    

    第二种方式 - 使用 ArrayList 的默认方法:

    ArrayList<Integer> x = new ArrayList<Integer>();
    for(int i=1;i<=add.length();i++){
       x.add(i);
    }
    Collections.shuffle(x);
    

    【讨论】:

    • 我真正想要的 shuffle 是 ArrayList arraybmorig,我的 arr[] 只是一种标记 Array 项目应该去的位置的方法......
    • 抱歉,您的第一个代码只是简单地打乱了 int[] 的数组,而第二个代码包含您不知道项目所在位置的集合...
    • 是的。在对 int[] 数组进行洗牌后,将位图放在 ar[0]、ar[1] 等位置
    • 好的,你的第一种方法对于为 ar[] 生成新的随机位置很有用
    猜你喜欢
    • 2020-11-29
    • 2019-06-19
    • 2011-12-14
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多