java中list集合删除其中的某一个元素

  • Post author:
  • Post category:java



方法一: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为装箱操作

更简洁,高效。



版权声明:本文为syq8023原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。