[英]Sum of all the elements in a Vector Java
爪哇 11.6
我有一个大小为 8 的向量,根据用户输入的 1 到 8 之间的数字,我的代码将随机生成值以放置在名为 vec_1 的向量中。
因此,例如,输出看起来像
Enter the number of trials:
>> 4
Trials Random Value
1 10
2 20
3 0
4 60
值 <10,20,0,60> 保存在名为 vec_1 的向量中,然后我使用
Enumeration enu = vec_tor.elements();
while(enu.hasMoreElements()) {
for (int i = 1; i<=4; i++) {
System.out.printf("\n " + String.valueOf(i));
System.out.printf(" " + String.valueOf(enu.nextElement()));
}
}
并排打印出向量中的元素。 我想将向量中的所有数字加在一起得到一个总和,所以 10+20+0+60 = 90。我想在添加向量的每个元素后打印“总和:90”。 我不确定如何在 java 中为向量逐个元素添加元素,我尝试查找其他问题,但它们主要与数组有关。 任何帮助表示赞赏。 谢谢!
使用 Java Streams API:
int sum = test.stream()
.mapToInt(Integer::valueOf) // or .map(i -> i)
.sum();
解释:
test
是一个Vector<Integer>
。java.util.Collection
类必须实现stream
方法。 这使程序员能够使用 Stream API。 Vector
还实现了Collection
。mapToInt
是一种方法,它使从流中提取的所有元素都映射到原始int
。 这由IntStream
类表示。 我们通过执行i -> i
(通过自动拆箱)或通过Integer::valueOf
将Integer
映射到相应的int
。IntStream
实现了sum()
方法,这正是我们所需要的。您可以在向量本身上添加调用add()
元素。 然后您可以使用stream()
将所有元素相加并返回总和。
import java.util.*;
class VectorTest {
public static void main(String[] args) {
Vector<Integer> vec_tor = new Vector<>();
vec_tor.add(10);
vec_tor.add(20);
vec_tor.add(0);
vec_tor.add(60);
System.out.println(vec_tor);
int sum = vec_tor.stream().reduce(0, Integer::sum);
System.out.println("Sum of vector elements: " + sum);
}
}
上面的代码会输出:
[10, 20, 0, 60] Sum of vector elements: 90
如果您想进一步研究,这里是有关Vector.add()和Stream.reduce()的文档。
向量元素总和:
Integer sum = v.stream() // convert to stream
.reduce(0,Integer::sum); // add all elements to initial zero value
来自向量的数组:
Integer [] a = v.toArray(new Integer[0]); // vector to array
单元测试
package example;
import org.junit.Test;
import java.util.Arrays;
import java.util.Vector;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
public class VectorSumTest {
@Test
public void sumVector() {
Integer [] data = {10,20,0,60};
Vector<Integer> v = new Vector<>(Arrays.asList(data));
Integer sum = v.stream().reduce(Integer::sum).get(); // vector elements sum
assertThat(sum, equalTo(90));
}
}
有多种方法可以做到
// using iterator
Iterator<Integer> it = vec_tor.iterator();
int sum = 0;
while(it.hasNext()) {
sum+=it.next();
}
System.out.println("sum:" + sum);
// using enumeration
sum = 0;
Enumeration<Integer> enumeration = vec_tor.elements();
while (enumeration.hasMoreElements()){
sum+=enumeration.nextElement();
}
System.out.println("sum:" + sum);
// using simple foreach loop
for (int element: vec_tor) {
sum += element;
}
System.out.println("sum:" + sum);
您可以在此处使用ArrayList
而不是Vector
,因为Vector
是一种非常古老的数据结构。
你可以这样做:
Vector<Integer> vector = new Vector<>();
// add elements
long sum = 0;
for (Integer x : vector) {
sum += x; // sum = sum + x;
}
System.out.println("Sum: " + sum);
for 循环只是遍历每个元素。 不需要复杂的枚举结构。 它还尊重存储在 Vector 中的实际元素计数。
注意:Vector 是一种非常古老的数据结构。 现在通常使用像ArrayList
这样的List
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.