Java 从列表中随机化

Java 从列表中随机化,java,random,Java,Random,它说我不能使用nextInt,你可以这样做 String random = (listArray[new Random().nextInt(listArray.length)]); System.out.println(random); String random=(listary[new random().nextInt(listary.length)] 您正在对数组使用语法,而您的listArray实际上是一个ArrayList(您正在其他地方执行list.add(),我猜就

它说我不能使用nextInt,你可以这样做

   String random = (listArray[new Random().nextInt(listArray.length)]);
    System.out.println(random);
String random=(listary[new random().nextInt(listary.length)]

您正在对数组使用语法,而您的
listArray
实际上是一个
ArrayList
(您正在其他地方执行
list.add()
,我猜就是这样)。您需要调用
ArrayList
的get方法,如下所示:


String random=listary.get(new random().nextInt(listary.size())


请注意
size()
方法,
length
属性仅适用于数组。

这取决于您想要这些东西做什么。但是,通常有两件事。您可以使用类
Random
ArrayList
中选择一个随机索引

或者可以使用collections
java.util.collections.shuffle()方法

Random ran = new Random();
String random = (String) list.get(ran.nextInt(list.size()));
System.out.println("random :"+rdom);

我猜你是来自C++的。java中的ArrayList由实际数组支持。但是,它们是无法访问的。你不需要对它们调用.length,但是.size()

调用一次,然后正常迭代。在“shuffle”上找不到符号谢谢你的解释,我通过阅读你的评论了解了很多:)是的,size()而不是length(),我想它在Java中也有同样的含义:)它在那里,但隐藏着。String[]数组支持array类,但它包含一组指向该字符串的指针(您永远不允许看到)。所以一切都是封装的。对于时间复杂度,您仅将其视为数组。
Random ran = new Random();
String random = (String) list.get(ran.nextInt(list.size()));
System.out.println("random :"+rdom);
public static void shuffle(List<?> list)
Random random = new Random();
int index = random.nextInt(listArray.size());
String random = listArray.get(index);