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