Path: csiph.com!aioe.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: Removing an element while iterating over a List with enhanced for? Date: Wed, 15 Feb 2017 22:43:37 -0500 Organization: Aioe.org NNTP Server Lines: 33 Message-ID: References: NNTP-Posting-Host: PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.java.programmer:36279 On 2/15/2017 5:56 PM, Knute Johnson wrote: > An enhanced for loop on a List is no different than using an Iterator > right? So is there any problem removing the current element from the > list while using the enhanced for loop? I couldn't find anything that > said it was OK or not OK in the JLS. > List list = Stream.of(1,5,7,9,13).collect(toList()); > > for (Integer i : list) > if (i == 9) > list.remove(i); > > list.forEach(System.out::println); > > list = Stream.of(1,5,7,9,13).collect(toList()); > > Iterator iter = list.iterator(); > > while (iter.hasNext()) > if (iter.next() == 9) > iter.remove(); > > list.forEach(System.out::println); Since you are already using streams and lambdas then why not: list = list.stream().filter(v -> v != 9).collect(toList()); ? Arne