java中list集合删除其中的某一个元素
方法一:Iterator 去除
//定义list List<User> list = new ArrayList<>(); User user1 = new User(); User user2 = new User(); user1.serName("111"); user2.serName("222"); list.add(user1); list.add(user2); //删除集合中某一元素值 Iterator<User> iterator = list.iterator(); while (iterator.hasNext()){ User next = iterator.next(); String name = next.getName(); if (name.equals("222")){ iterator.remove(); } }
缺点:虽然也能去除 但是列表改造成 Iterator 类型的了 ,还要转换。
方法二: stream 去除
//定义list List<User> list = new ArrayList<>(); User user1 = new User(); User user2 = new User(); user1.serName("111"); user2.serName("222"); list.add(user1); list.add(user2); //删除集合中某一元素值 list.stream().findFirst().map(vo -> { if (vo.getName().equals("222")){ list.remove(vo); } return vo; });
优点: 没有改变list格式并且更简洁。
缺点:remove的时候会再次遍历整个list来找出 这个元素,性能会有一定的损耗。
方法三: stream +索引 去除
//定义list List<User> list = new ArrayList<>(); User user1 = new User(); User user2 = new User(); user1.serName("111"); user2.serName("222"); list.add(user1); list.add(user2); //删除集合中某一元素值 IntStream.range(0,list.size()).filter(i-> list.get(i).getName().equals("222")). boxed().findFirst().map(i->list.remove((int)i));
其中boxed为装箱操作
更简洁,高效。
大道至简,知易行难。从今天开始改变,这是对平庸生活最好的回击。