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的数据的顺序发生了变化,想到解决办法了再修改文章
需求:从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的数据的顺序发生了变化,想到解决办法了再修改文章
相关文章推荐
- oracle range分区表已经有了MAXVALUE 分区,如何添加分区?要不能删除MAXVALUE分区里的数据,不影响在线应用。
- 详解javaweb中jstl如何循环List中的Map数据
- laravel查询得到的数据(为对象object)无法进行数组循环遍历,而且不能用数组方式访问和查看的原因以及解决方法
- 如何避免Java程序的数据脏读问题?
- 如何正确使用Java I/O输出和读入数据
- 如何在JAVA程序中使用Struct一次传入多条数据给Oracle的存储过程。
- 在循环中读取sqlDataReader.Read()中的所有列,数据类型如何转换?
- [Domino]如何用java远程访问Domino邮箱数据
- WPF中如何解决3d模型与贴图不能完全匹配的问题
- WPF中如何解决3d模型与贴图不能完全匹配的问题
- WPF中如何解决3d模型与贴图不能完全匹配的问题
- Java 如何将数据追加写入到文件
- WPF中如何解决3d模型与贴图不能完全匹配的问题
- WPF中如何解决3d模型与贴图不能完全匹配的问题
- [Domino]如何用java远程访问Domino邮箱数据
- WPF中如何解决3d模型与贴图不能完全匹配的问题
- 如何正确使用Java I/O输出和读入数据
- 在上JAVA课时看到了一种的调试方法,帮我把这个循环弄明白了,而且对FOR循环的理解也更深了
- 利用java如何读取Excel中的数据!
- WPF中如何解决3d模型与贴图不能完全匹配的问题