IndexOutOfBoundsException搜索

sha*_*ash 0 java

我有一个问题,返回我的跟随错误

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at graphsshahar.TestDijkstra.main(TestDijkstra.java:38)
Run Code Online (Sandbox Code Playgroud)

我的程序得到一个对象列表,我需要在列表中找到等于一个,然后打印它,这是代码

    public static void main (String [] args){
    System.out.println("begin");

    int one = 2;
    int two = 10;
    List<Conniction> tempDeal = ConnictionDAO.getInstance().findPath(one, two);

    List<String> oneid = new ArrayList<String>();
    List<String> twoid = new ArrayList<String>();

    for (int j = 1; j <= tempDeal.size(); j++) {
     System.out.println("get");
        if( Integer.parseInt(tempDeal.get(j).getOneid()) == one ) 
        {
            oneid.add(tempDeal.get(j).getOneid());
            System.out.println(oneid.get(j));

        }

    }
    System.out.println("end");
Run Code Online (Sandbox Code Playgroud)

我该修理什么?我不知道if语句有什么问题

Sim*_*iak 5

只需改变你的j < tempDeal.size()号码,从0开始,而不是从1开始.

for (int j = 0; j < tempDeal.size(); j++) { ... }
Run Code Online (Sandbox Code Playgroud)

如果您使用j = 1,则无法在0位置获得物品.


更新: 您也可以使用像@AVD这样的迭代器.

for(Conniction member: tempDeal) {
   // do work
}
Run Code Online (Sandbox Code Playgroud)