Java 按特定间隔将项添加到arraylist

Java 按特定间隔将项添加到arraylist,java,android,arraylist,Java,Android,Arraylist,我试图在每4项之后向ArrayList添加一个元素 ArrayList在此之后 项目|项目|项目|新项目|项目|项目|项目|新项目|项目 所以我使用代码 int x=0; for (int i=1;i<myNews.size();i++) { if (i%4==0) { NewsData news = new NewsData(); news.setId(999); news.setItem_type(3);

我试图在每4项之后向
ArrayList
添加一个元素

ArrayList
在此之后

项目|项目|项目|新项目|项目|项目|项目|新项目|项目

所以我使用代码

int x=0;
for (int i=1;i<myNews.size();i++) {           
    if (i%4==0) {
        NewsData news = new NewsData();
        news.setId(999);
        news.setItem_type(3);
        news.setCat_id(97);
        myNews.add(i+x,news);
        x++;
    }
}
intx=0;

对于(int i=1;i而言,问题在于您的索引由于插入元素而变得混乱。解决此常见问题的最佳方法是以另一种方式遍历列表,即从最后一项开始

for (int i=myNews.size()-1;i>0;i--) {           
  if (i%4==0) {
    NewsData news = new NewsData();
    news.setId(999);
    news.setItem_type(3);
    news.setCat_id(97);
    myNews.add(i,news);
  }
}
如果要避免在所有项目上循环,并且只在要插入项目的位置进行迭代,则必须找出要插入的最后一个项目:

int last = myNews.size() / 4 * 4;
if (last == myNews.size())
    last -= 4;
for (int i = last; i > 0;i -= 4) {           
    NewsData news = new NewsData();
    news.setId(999);
    news.setItem_type(3);
    news.setCat_id(97);
    myNews.add(i, news);
}

为了使其更具可读性,还可以尝试使用新的ArrayList。 循环遍历现有数组列表,并将元素添加到新的ArrayList,条件是每4个元素都是新的

    List<NewsData> myNews = new ArrayList<>();
    List<NewsData> newNews = new ArrayList<>();

    for (int i = 0; i < myNews.size(); i++) {
        if (i % 4 == 0) {
            NewsData news = new NewsData();
            news.setId(999);
            news.setItem_type(3);
            news.setCat_id(97);
            myNews.add(news);
        }
        newNews.add(myNews.get(i));
    }
List myNews=new ArrayList();
List newNews=new ArrayList();
for(int i=0;i
试试这个
myNews.add(i,news);