Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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中,有没有一种方法可以将包中的元素相加?_Java_Arrays - Fatal编程技术网

在Java中,有没有一种方法可以将包中的元素相加?

在Java中,有没有一种方法可以将包中的元素相加?,java,arrays,Java,Arrays,我对Java很陌生,所以请容忍我 所以我有一个类,对于bag类和interface类都有一个泛型,因为我必须有两个包:一个包包含字符串,另一个包包含double,它也可以是float,作为替代,如果这对程序更有效的话。我该如何在bag类中编写一个接口,将第二个bag中的两个或浮点数相加,以获得该bag所保存的总值?如果您的bag类可以保存非数字的内容,那么给它一个将其内容相加的方法是不合适的 假设您的行李界面如下所示: interface Bag<T> { void add(T

我对Java很陌生,所以请容忍我


所以我有一个类,对于bag类和interface类都有一个泛型,因为我必须有两个包:一个包包含字符串,另一个包包含double,它也可以是float,作为替代,如果这对程序更有效的话。我该如何在bag类中编写一个接口,将第二个bag中的两个或浮点数相加,以获得该bag所保存的总值?

如果您的bag类可以保存非数字的内容,那么给它一个将其内容相加的方法是不合适的

假设您的行李界面如下所示:

interface Bag<T> {
   void add(T item);
   Iterator<T> items();
}
因此,要对袋子进行汇总:

double t = bag.reduce(0.0, (a,b) -> a + b);
而reduce的实施类似于:

public T reduce(T initial, BiFunction<T,T> f) {
   T finalValue = initial;
   for (T t : contents) {
      finalValue = f.apply(finalValue, t);
   }
   return finalValue;
}

如果你能在课堂上张贴你的书包就好了。如果它由一个数组支持,您可以这样总结:double[]a=newdouble[]{1.0,2.0,3.0};double sum=Arrays.streama.sum;欢迎来到SO!Bag是一种抽象数据类型,没有这样的数据结构原语。在用于实现包的数据结构原语(可能是数组或链表)上循环,并将每个元素添加到累加器变量中。如果没有代码尝试,我不确定我能提供的不仅仅是这个建议。对于java新手来说,需要更多的解释@约佩金希望这一点现在更清楚了。
interface Bag<T> {
   ...
   T reduce(T initial, BiFunction<T,T> f);
   ...
}
double t = bag.reduce(0.0, (a,b) -> a + b);
public T reduce(T initial, BiFunction<T,T> f) {
   T finalValue = initial;
   for (T t : contents) {
      finalValue = f.apply(finalValue, t);
   }
   return finalValue;
}