返回一个由n个随机数组成的整数ArrayList?

我如何创建方法RandomArray并让它接受一个整数n并返回一个整数的ArrayList,它由0到255之间的n个随机数组成。(换句话说:让返回的数组大小为n)??? (我正在使用Java Eclipse)我创建了RandomArray,但是我不知道如何将它放在ArrayList中,这是我到目前为止所得到的:

import java.util.Random; public class Lab6 { public static void main(String[] args) { Random random = new Random(); int[] n = new int[1]; for( int i = 0 ; i < n.length ; i++ ) { for ( int i1 = 0 ; i1 < n.length ; i1++ ) { n[i1] = random.nextInt(255); } } for( int a : n ) { System.out.println( a ); } } } 

ArrayLists的工作方式与数组的工作方式大致相同,只是它们可以根据需要增长(或缩小),并且不支持通过[]运算符进行访问/检索(即不能在ArrayList上执行n[i1] )。 相反,使用其add()方法向其添加元素,使用get()方法访问元素。

你的意思是这样的:

 public ArrayList randomArrayList(int n) { ArrayList list = new ArrayList<>(); Random random = new Random(); for (int i = 0; i < n; i++) { list.add(random.nextInt(255)); } return list; } 

尝试这样的事情

 private ArrayList randomArray(int size){ Random random = new Random(); ArrayList newArrayList = new ArrayList(); for(int i=0; i 

主方法包含示例用法

 import java.security.*; import java.util.*; public class Util { public static void main(String[] args) { int n = 15; ArrayList integers = RandomArray(n); for (Integer integer : integers) { System.out.println(integer); } } private static ArrayList RandomArray(int n) { Random rand = new SecureRandom(); byte[] b = new byte[n]; rand.nextBytes(b); Integer[] ints = new Integer[b.length]; for (int i = 0; i < b.length; i++) { ints[i] = b[i] & 0xFF; } return new ArrayList(Arrays.asList(ints)); } } 

这比你要求的要多,但它与切向相关,可能会帮助人们遇到这个问题。

当你想要一个随机整数的ArrayList时,你通常只需要一些随机数,并且不需要将它们存储在任何地方。 在这种情况下,您可能只需要一个Iterator就可以随时返回一个随机整数流。 这对于Guava库(现在应该是每个Java代码库的一部分)来说非常容易。

您可以轻松定义Iterator ,它可以根据您的要求为您提供尽可能多的随机整数(或您想要的任何其他数据类型):

 public static final Iterator RAND_INT_ITER = new AbstractIterator() { @Override protected Integer computeNext() { return ThreadLocalRandom.current().nextInt(); } }; 

或者,如果要使用Random.nextInt(int max)方法:

 public static Iterator randIntIterator(final int max) { return new AbstractIterator() { @Override protected Integer computeNext() { return ThreadLocalRandom.current().nextInt(max); } }; } 

在任何需要的地方调用此方法都没有问题,因为它不会存储您没有浪费时间或空间计算任何东西的状态,垃圾收集器会在您完成时为您清理它。 我们使用ThreadLocalRandom来确保它们是线程安全的,并且避免在整个地方构建新的Random对象(以及引入的潜在数据争用条件,尽管Java的新版本非常聪明)。 如果更有意义的话,您可以轻松使用现有的Random对象。

一些例子:

 // print random ints until we see one that's divisible by 100 while(true) { int rnd = RAND_INT_ITER.next(); System.out.println(rnd); if(rnd % 100 == 0) { break; } } // Get an iterator of exactly 10 random ints, [0,255) Iterator tenRandInts = Iterators.limit(randIntIterator(255), 10); while(tenRandInts.hasNext()) { System.out.println(tenRandInts.next()); } // Note that the returned iterator above is still one-use, if you need to iterate // Over the same numbers more than once, put them in a list first // It's not a good idea to simply convert an Iterator into an Iterable, see: // http://stackoverflow.com/a/14711323/113632 List randIntLs = ImmutableList.copyOf( Iterators.limit(randIntIterator(255), 10)); for(int rnd : randIntLs) { System.out.println(rnd); } for(int rnd : randIntLs) { System.out.println(rnd); } 

使用此模式生成随机数据通常会使您的代码更清晰,更精简,更易于阅读。 试试看 :)