【问题标题】:How to get a random value from a string array without repetition?如何从字符串数组中获取随机值而不重复?
【发布时间】:2019-07-16 08:36:46
【问题描述】:

如何从android中的字符串数组中获取随机值而不重复?

我在String.xml 文件中有如下数组 -

    <string-array name="msg">
    <item>Cow</item>
    <item>Pig</item>
    <item>Bird</item>
    <item>Sheep</item>
</string-array>

我正在使用以下代码选择随机字符串 -

String[] array = Objects.requireNonNull(context).getResources().getStringArray(R.array.msg);
String Msg = array[new Random().nextInt(array.length)];

谁能帮帮我?谢谢是提前...!

【问题讨论】:

  • 你有循环还是什么?
  • 不,我没有任何循环
  • 我不知道为什么人们会不必要地编辑问题...我可以理解是否有任何错误/遗漏然后他们可以愉快地进行编辑,但只需删除一个词就没有任何意义...少工作人...

标签: android arrays string random non-repetitive


【解决方案1】:

你可以这样做吗:

Collections.shuffle(copyOfArray);

然后循环呢?

for (int i = 0; i < copyOfArray.size(); i++) {
  println(copyOfArray.get(i))
}

【讨论】:

  • shuffle (java.util.List&lt;?&gt;) in Collections cannot be applied to (java.lang.String[])
【解决方案2】:

试试这个 -

array = Objects.requireNonNull(context).getResources().getStringArray(R.array.msg);
    //String msg = array[new Random().nextInt(array.length)];

    LinkedList<String> myList = new LinkedList<String>();

    for (String i : array)
        myList.add(i);
    Collections.shuffle(myList);

    for (int i = 0; i < myList.size(); i++) {
       String msg=myList.get(i);
    }

【讨论】:

  • 哇...工作...谢谢...!但这只是@Mike & Gowtham 代码的组合,谢谢大家
【解决方案3】:

试试这个解决方案,

LinkedList<String> myList = new LinkedList<String>();

  String[] words = { "Cow", "Pig", "Bird", "Sheep" };
     for (String i : words) 
       myList.add(i);
       Collections.shuffle(myList);

那么,

sampleText.setText(myList.pollLast());

LinkedList 中的pollLast() 将检索并删除此列表的最后一个元素,如果此列表为空,则返回 null。

【讨论】:

    【解决方案4】:

    试试这个。

    int max = array.length() - 1;
    int min = 0;
    String Msg = array[new Random().nextInt(max - min + 1) + min];
    

    【讨论】:

      【解决方案5】:
      • 首先将您的 String 资源数组转换为 ArrayList
      • 将当前 ArrayList 的值填充到 HashSet 并将该 HashSet 转换为新的 ArrayList
      • 现在改组新的 ArrayList

      【讨论】:

        猜你喜欢
        • 2019-04-01
        • 2021-03-06
        • 1970-01-01
        • 2012-07-20
        • 2015-07-05
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多