java - 如何生成不重复的随机字符串数组 url?

标签 java android arrays string random

我正在尝试在 picasso 中生成随机字符串数组 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);

最佳答案

您可以在数组/列表中跟踪以前生成的整数,并在每次生成新的随机数时检查该数组。这样,如果生成的新整数已经存在于数组中,则生成一个新整数,直到生成 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;
}

关于java - 如何生成不重复的随机字符串数组 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56312085/

相关文章:

java - Android View 或 Activity ?

ios - 无法在 iOS 中的数组上声明追加命令

c - 动态分配指针数组到C中的结构

arrays - 比较数组时删除匹配项

android - 在 Android 中单击按钮时出现 NullPointerException

java JMenuBar 不可见?为什么?

Java TimerTask 不更新静态字段

java - 重定向 servlet 异步和心跳

java - Tomcat - 无法打开日志 - 无法部署

android - 三星健康 SDK 合作伙伴应用程序注册