如何生成随机字符串数组网址而不重复?

时间:2019-05-26 08:58:04

标签: java android arrays string random

我正在尝试在毕加索中生成随机字符串数组url,一切正常,但会重复,就像我启动应用程序时有28个字符串数组项,某些项正在重复,但是随机启动时我一次只希望有1个项

这是我的代码

     ImageView imageView = itemView.findViewById(R.id.imageview);
        random = new Random(); 
        int p=  random.nextInt(icons.length);
        Picasso.get().load(icons[p]).into(imageView);

2 个答案:

答案 0 :(得分:0)

尝试以下

ImageView imageView = itemView.findViewById(R.id.imageview);
Random random = new Random();
List<Integer> cache = new ArrayList<>();
int p = 0;
do {
     p = random.nextInt(icons.length);
} while(cache.contains(p));
cache.add(p);

Picasso.get().load(icons[p]).into(imageView);

答案 1 :(得分:0)

您可以跟踪数组/列表中先前生成的整数,并在每次生成新的随机数时检查数组。这样,如果生成的新整数已存在于数组中,则将生成一个新的整数,直到生成28个数字为止,之后必须清除数组并重新开始。

ImageView imageView = itemView.findViewById(R.id.imageview);
Random random = new Random();
List<Integer> prevInts = new ArrayList<>();
Picasso.get().load(icons[randomUniqueInteger()]).into(imageView);

public int randomUniqueInteger(){
    int p = 0;
    do {
        p = random.nextInt(icons.length);
    } while(prevInts.contains(p));

    if ((prevInts.size + 1) == icons.length){
       prevInts.clear();
    }

    prevInts.add(p);

    return p;
}