在Array list Java中打印多个值

时间:2017-05-12 18:48:13

标签: java arraylist

给出java代码:

private List<String> list_from = new ArrayList<String>();
private List<String> list_dest = new ArrayList<String>();

list_from的值为:

[v5, v3, v5, v1, v1, v6, v6, v3, v4, v5, v4, v6]

list_dest的值为:

[v3, v5, v1, v5, v6, v1, v3, v6, v5, v4, v6, v4]

我正在使用循环来用list语句打印出list_from中的值:

for(int i=0;i < list_from.size();i++){                    
    if(list_dest.get(i+1) == list_from.get(i)){
        System.out.println(list_from.get(i));
    }
}

它给出了正确的结果,但在if语句中有未知错误。

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 18, Size: 18

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:3)

list_dest.get(i + 1),这是问题所在。 在最后一次迭代中,i的值是可能的最大索引。当你向它添加1时,它将给出arrayOutOfBoundsException。

最好使用string.equals()方法来比较字符串。

答案 1 :(得分:3)

比较字符串应由string.equals(string2)完成 字符串是对象。比较对象时应始终使用equals。 你也在比较数组中太多的索引。

您的代码应如下所示:

for(int i=0;i < list_from.size()-1;i++){                    
    if(list_dest.get(i).equals(list_from.get(i+1))){
        System.out.println(list_from.get(i));
    }
}

答案 2 :(得分:2)

多个问题。首先,将循环条件更改为<list_from.size()-1

其次,将字符串与.equals()进行比较,而不是==

代码变为

for(int i=0;i < list_from.size()-1;i++){                    
    if(list_dest.get(i+1).equals(list_from.get(i))){
        System.out.println(list_from.get(i));
    }
}