Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用参数HashMap使开销成为方法?_Java - Fatal编程技术网

Java 如何使用参数HashMap使开销成为方法?

Java 如何使用参数HashMap使开销成为方法?,java,Java,我有两个方法可以实现相同的功能,但是一个接收HashMap,另一个接收HashMap。如何在不复制代码的情况下实现此操作。创建两个方法,一个包含真实代码,接受具有双数组的版本,另一个方法,接受整数版本只调用此方法,但首先将整数数组转换为双数组 public void doSomething(HashMap<Integer, int[]> arg0) { //convert int[] to double[] and fill this HashMap HashMap&l

我有两个方法可以实现相同的功能,但是一个接收HashMap,另一个接收HashMap。如何在不复制代码的情况下实现此操作。

创建两个方法,一个包含真实代码,接受具有双数组的版本,另一个方法,接受整数版本只调用此方法,但首先将整数数组转换为双数组

public void doSomething(HashMap<Integer, int[]> arg0) {

   //convert int[] to double[] and fill this HashMap
   HashMap<Integer, double[]> converted;

   doSomething(converted);
}

public void doSomething(HashMap<Integer, double[]> arg0) {

   //your logic here

}

您可以转换为Map,但这将涉及更改方法的调用方和对象开销。猜猜看,没有更好的方法了。你发布的代码甚至不会编译,你需要使用整数[]而不是int[]@msrd0为什么不编译它?@msrd0基元数组是一个对象,因此可以作为类型参数。它编译得很好。@qqilihq因为Java不允许像int或double这样的类型作为模板。您总是需要像Integer或Double这样的包装器类。这将不起作用,因为擦除在运行时都会变成doSomethingHashMap arg0!是的,张贴后注意到。谢谢你提醒我这个事实。@JarrodRoberson我可以用泛型类型来做这个吗?这永远不会有用!doStuffHashMap和doStuffHashMap具有相同的擦除