您的位置:首页 > 编程语言 > Java开发

Java中如何在循环中的把已经匹配好不在参与下次循环中,而且数据不能丢失了

2018-03-27 13:35 239 查看
 在开发中,遇到foreach的,for循环中的一个小坑
需求:从poi列表中查出数据,从收藏表中查出数据,诺是收藏过,则给收藏的数据poi中collection=1,表示收藏了,collection=2表示未收藏。poi查出的数据需要返到前端页面不能丢失。 List<Poi> poiList = poiService.getPOIList(poi);
// 判断是否收藏
Bookmarks bookmarks = new Bookmarks();
bookmarks.setUserId(userId);
bookmarks.setStatus(1);
bookmarks.setType(1);
List<Bookmarks> bookMarksList = bookMarksService
.getBookMarksList(bookmarks);
ArrayList<Poi> arrayList = new ArrayList<Poi>();
for (Bookmarks bookmark : bookMarksList) {
for (int i = 0; i < poiList.size(); i++) {
if (bookmark.getFocusId().equals(poiList.get(i).getId()) ) {
poiList.get(i).setCollection(1);//收藏
arrayList.add(poiList.get(i));
poiList.remove(poiList.get(i));
}else {
poiList.get(i).setCollection(2);
}
}
}
poiList.addAll(arrayList);
generalDto.setItems(poiList);解决办法,使用for循环 foreach不能做删除操作,先创建一个Arraylist集合,然后把匹配到的数据放到新建的list集合中,然后给collection赋值=1,从原来的集合poilist中删除,最后循环结束以后,把ArrayList 添加到需要返回的poilist中就可以了
注意:foreach中只能读操作不能写操作,for中可以进行添加删除操作。在返回poiList的数据的顺序发生了变化,想到解决办法了再修改文章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: