2014-06-11 58 views
1

我正在尝试编写一个代码,其中包含一个位图数组,但是我想在另一个数组中保存位图,这些位置将移动到位图上。为了做到这一点,我做如下:Android支持位图保持原始位置的ArrayList

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 [] ...什么是做这个功能的最佳方式?

Thx提前!

回答

0

据我所知,你想洗牌你的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); 
+0

我真的想洗牌的是ArrayList中 arraybmorig,我ARR []是只有一种方法来标记阵列的项目应该去的位置... – Billyjoker

+0

对不起,但你的第一个代码只是洗涤int []的数组,而第二个代码与Collections不知道项目在哪里.. – Billyjoker

+1

是的。在int []数组的混洗之后,把你的位图放在位置ar [0],ar [1]等等 –