Java集合类ArrayList删除特定元素

前一段时间入职新公司,熟悉公司系统原有代码的时候,发现公司代码那个烂啊,系统能正常跑,都不能用侥幸来形容,就是创造了一个奇迹。因为里面不仅没有coding style,而且竟然有很明显的常识性错误。其中当我一眼指出最明显的早就应该出过问题的一个地方,项目组几乎所有成员,是的,几乎全部成员,都说这个还真不知道,涨知识了,那就是:Java集合类ArrayList删除特定元素。发现原来不是所有人都知道怎么做,这难道不是最基础的吗?唉,真不知道这些系统是怎么跑起来的。我们首先看两种错误的写法,第一种: @Test public void testRemove1() { List<String> list = new ArrayList<String>() { private static final long serialVersionUID = 1L; { add("cn"); add("bridgeli"); add("blog"); } }; for (int i = 0, len = list.size(); i < len; i++) { String str = list.get(i); if ("cn".equals(str)) { list.remove(str); } } } 这个写法如果你不知道错在哪,那你得真的好好补基础了。由于这个错误比较明显,所以有人搞了下面这种写法,也是我们公司的同事犯的一个错误: @Test public void testRemove2() { List<String> list = new ArrayList<String>() { private static final long serialVersionUID = 1L; { add("cn"); add("bridgeli"); add("blog"); } }; for (String str : list) { if ("cn".equals(str)) { list.remove(str); } } } 跑一下这个例子看看,把cn换成bridgeli试试,出乎不出乎你的意料?下面我们就来简单探究一下原因foreach的原理,其实特别简单: ...

May 28, 2017 · 1 min · 191 words · Bridge Li