如何在不重复的情况下从字符串数组中获取随机值?
How to get a random value from a string array without repetition?
如何在不重复的情况下从 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)];
有人可以帮我吗?谢谢提前...!
你能做这样的事情吗:
Collections.shuffle(copyOfArray);
然后循环遍历?
for (int i = 0; i < copyOfArray.size(); i++) {
println(copyOfArray.get(i))
}
试试这个解决方案,
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()
将检索并删除此列表的最后一个元素,如果此列表为空,则 returns null。
试试这个。
int max = array.length() - 1;
int min = 0;
String Msg = array[new Random().nextInt(max - min + 1) + min];
- 首先将您的 String 资源数组转换为 ArrayList
- 将当前 ArrayList 的值填充到 HashSet 并将该 HashSet 转换为新的 ArrayList
- 现在随机播放新的 ArrayList
试试这个 -
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);
}
如何在不重复的情况下从 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)];
有人可以帮我吗?谢谢提前...!
你能做这样的事情吗:
Collections.shuffle(copyOfArray);
然后循环遍历?
for (int i = 0; i < copyOfArray.size(); i++) {
println(copyOfArray.get(i))
}
试试这个解决方案,
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()
将检索并删除此列表的最后一个元素,如果此列表为空,则 returns null。
试试这个。
int max = array.length() - 1;
int min = 0;
String Msg = array[new Random().nextInt(max - min + 1) + min];
- 首先将您的 String 资源数组转换为 ArrayList
- 将当前 ArrayList 的值填充到 HashSet 并将该 HashSet 转换为新的 ArrayList
- 现在随机播放新的 ArrayList
试试这个 -
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);
}