Java 按特定间隔将项添加到arraylist
我试图在每4项之后向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);
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);