返回ArrayList的问题

时间:2015-04-09 03:16:09

标签: java arraylist

我将字符串"Hello""Cat""Dog"添加到名为values的arraylist中,将其传递给方法doubleIt(),该方法应返回所有内容的列表,即

"Hello", "Hello", "Cat", "Cat", "Dog", "Dog"

但我得到的只是[]。我在这里做错了什么?

import java.util.*;

public class Addition
{

    public static void main(String [] args)
    {
        List<String> values = new ArrayList<String>();
        values.add("Hello");
        values.add("Cat");
        values.add("Dog");

        values = doubleIt(values);
        System.out.println(values);

    }

    public static List<String> doubleIt(List<String> values)
    {
        List<String> temp = new ArrayList<>();

        for(int i = 0; i < temp.size(); i++)
        {
            temp.add(values.get(i*2));
        }
        return temp;
    }
}

3 个答案:

答案 0 :(得分:2)

你的第一个错误就在这里......

for(int i = 0; i < temp.size(); i++)
第一次调用

temp.size()时会0,你真的应该使用values,但这会导致IndexOutOfBoundsException

所以你可以使用像...这样的东西。

for (int i = 0; i < values.size(); i++) {
    temp.add(values.get(i));
    temp.add(values.get(i));
}

代替

答案 1 :(得分:1)

首先从

更改for循环条件
for(int i = 0; i < temp.size(); i++)

for(int i = 0; i < values.size(); i++)

然后再添加2次值。

答案 2 :(得分:1)

doubleIt()中的for循环循环到错误的列表大小。而你试图将一个字符串乘以2,而不是将它加两次。

public static List<String> doubleIt(List<String> values)
{
    List<String> temp = new ArrayList<>();

    for(int i = 0; i < values.size(); i++) // <-- you needed to loop up to the size of the values list, not the temp list
    {
        temp.add(values.get(i));
        temp.add(values.get(i));
    }
    return temp;
}