我正在ArrayLists
上进行一个项目以及总和,标准偏差和方差等数学方法,我遇到了ArrayList<Double>
。
public static double Sum(ArrayList<Double> list) {
double sum = 0;
for (int i = 0; i < list.size(); i++) {
sum = sum + list.get(i);
}
return sum;
}
我理解ArrayList
是如何运作的,但我不确定这种方法发生了什么,有人能帮助我更好地理解它吗?
答案 0 :(得分:1)
这些被称为Generics
。 Oracle有一个很棒的tutorial on it
长话短说,如果你写List list = new ArrayList
,那就意味着可以把任何东西放在那个列表中:玩具,食物,书籍。有点乱,是吧?我打赌你更喜欢的是只包含某些类型物品的盒子:一个玩具盒子,一个用于食物的盒子和一个用于书籍的盒子。这通常是泛型允许你做的事情。通过撰写List<Book> list = new ArrayList<>()
,您说这个列表只能包含书籍。如果您尝试在其中放入其他内容,则会出现错误。
总而言之,在您的情况下,方法sum
需要ArrayList<Double>
- 一个只能包含Double
个对象的列表。您可以确定所有元素都属于该类型,因此您无需检查。
答案 1 :(得分:0)
请注意:ArrayList<Double> list = new ArrayList<Double>();
它会创建一个只能包含double
值的列表。 double
是一个可以包含整数和十进制数的变量类型。因此,创建这样的列表只允许程序将数字添加到列表中:list.add(4.3);
调用此方法时,必须将ArrayList<Double>
对象传递给它:Sum(List);
然后它会获取列表并将该列表的每个元素一起添加到名为sum
的变量中。完成后,它将返回该总和。 return sum;
。
以下是这样做的:
for (int i = 0; i < list.size(); i++) {
sum = sum + list.get(i);
}
其基本语法为for(initialization; condition; iteration)
。首次调用时,它将执行初始化,只要条件为真,它就会继续重复,每次重复时都会执行迭代即可。
这个特定的变量创建一个名为i
的变量,并为其初始化赋值0
。然后,对于条件,它会i < list.size()
,这意味着只要i
中包含的整数值小于{{1}中的元素数量,它就会重复}。最后,对于迭代,它执行ArrayList
,这将使每次线程循环时i++
中包含的整数值更大。
因此,每次循环迭代时,我们的i
将获得一个更大的值。在循环内部,我们有i
。这将获取sum = sum + list.get(i);
(十进制)变量double
并将其添加到其当前值,无论包含在sum
(记住i
具有数字值)元素的ArrayList中。
点击此链接可详细了解i
圈:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
因此,如果for
包含值ArrayList
且{2, 4, 1, 5}
包含值1,则调用i
会将值sum = sum + list.get(i);
添加到值包含在4
中。如果sum
等于i
并且我们调用了0
,则sum = sum + list.get(i)
的值将增加2,并且会继续这样做。
这些被称为sum
。 索引是用于访问数组或数组列表中对象的数字。如果我有一个看起来像这样的数组:indexes
那么4的索引将是0,2的索引将是1,5&#39;索引将是2,而3&#39 ; s指数为3。