Java for循环永远不会终止

时间:2014-04-24 07:12:11

标签: java android for-loop

我正在尝试创建一个基本的for循环,它将临时List的元素添加到主ArrayList中。这会导致我的Android应用程序反复崩溃。

    for (int i = 0; i<tempFavList.size();i++){
        Log.v("MyApp",Integer.toString(tempFavList.size()));
        favourites.add(tempFavList.get(i).toString());
    }

有些调试显示在调用for循环之前tempFavList.size()等于2,但是在调用for循环时(在应用程序崩溃之前至少达到+500,000),它会变为无穷大。列表tempFavList是使用代码tempFavList = currentUser.getList("favourites");

从Parse数据库中提取的List

我很困惑为什么一旦调用for循环,临时List的大小就会增加,因为我没有在for循环中添加任何项目。任何帮助将不胜感激

4 个答案:

答案 0 :(得分:3)

您可以尝试:

final int tempSize = tempFavList.size();

for (int i = 0; i < tempSize; i++){
    ....
}    

答案 1 :(得分:1)

好的,所以这就是我认为你在做的95%我在这里发布的代码可能就是你所拥有的

import java.util.ArrayList;
import java.util.List;
public class Temp {
    static ArrayList<String> favourites = new ArrayList<String>();
    public static void main(String[] args) {
        List<String> myGuiltyList= CurrentUser.getList("favourites");
        for (int i = 0; i < myGuiltyList.size(); i++) {
            System.out.println("myInnocentList size = " + favourites.size());
            favourites.add(myGuiltyList.get(i));
            if (myGuiltyList.size() == 1000) {
                break;
            }
        }
    }
    private static class CurrentUser {
        public static List<String> getList(String listName) {
            favourites.add("1");
            favourites.add("2");
            favourites.add("3");
            if (listName.equals("favourites")) {
                return favourites;
            }
            else return null;
        }
    }
}

问题是您命名为收藏夹的静态列表实际上是您在调用CurrentUser.getList("favourites");行时获得的SAME列表。

因此它们实际上是相同的列表,并且您将元素添加到同一列表中,并且列表的大小随着每个循环而增加,并且循环将永远不会停止因为列表的大小将永远不会小于因为它们以相同的比率增加 :d

答案 2 :(得分:0)

使用迭代器迭代:

for (Object o : tempFavList){
    Log.v("MyApp",Integer.toString(tempFavList.size()));
    favourites.add(o.toString());
}  

如果在迭代时修改了集合,它很可能会抛出异常。

答案 3 :(得分:0)

for (Iterator iterator = tempFavList.iterator(); iterator.hasNext();)
{ favourites.add(iterator.next());}