![](/img/trans.png)
[英]Add or Update elements of an ArrayList based on another 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.