繁体   English   中英

根据参数类型向ArrayList添加随机元素?

[英]Add random elements to ArrayList based on argument type?

抱歉,标题有点难以理解。 我正在尝试做的是创建一个通用方法,该方法可以接收任何类型的ArrayList,并向其添加随机生成的元素(属于该类型)。 例如,如果我将Integer ArrayList传递给该方法,它将生成10个随机Integer,并将它们添加到ArrayList中。 如果它是Long ArrayList,它将生成10个随机Long值,依此类推。

是否有某种类别或接口可以自动知道需要生成哪种类型? Random类的问题在于,您必须手动调用诸如“ nextInt”之类的方法。 它们不是基于参数类型隐式的

这就是我的意思(无法使用通用的Random类):

public static <AnyType> void addRandElements (ArrayList<AnyType> arr){
    arr.add(rand.nextInt());
    return arr;

}

传递适当类型的Supplier

public static <AnyType> void addRandElements (ArrayList<AnyType> arr, Supplier<? extends AnyType> supplier){
  // Surround with a loop to add more than one.
  arr.add(supplier.get());
}

该供应商可以返回随机元素:

addRandElements(intList, () -> rand.nextInt());

或固定元素:

addRandElements(strList, () -> "fixed string");

或其他类型的元素:

addRandElements(listOfLists, ArrayList::new);

但要点是,您需要指定如何生成元素,作为此通用方法的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM