工作中遇到的removeIf结合lambda表达式的一种用法

public class test {
	 public static void main(String[] args) throws Exception {
		 List<String> list =new ArrayList<String>();
		 list.add("1");
		 list.add("12");
		 list.add("13");
		 list.add("0");
		 System.out.println("初始时:"+ list.toString());
		 list.removeIf("13"::equals);
		 System.out.println("过滤完:" + list.toString());
		 
	 }
}

初始时:[1, 12, 13, 0]
过滤完:[1, 12, 0]

public class test {
	 public static void main(String[] args) throws Exception {
		 List<String> list =new ArrayList<String>();
		 list.add("1");
		 list.add("12");
		 list.add("13");
		 list.add("0");
		 System.out.println("初始时:"+ list.toString());
		 list.removeIf(s -> s.contains("1"));//对集合进行过滤,删除集合中包含“1”的元素
		 System.out.println("过滤完:" + list.toString());
		 
	 }
}

初始时:[1, 12, 13, 0]
过滤完:[0]


public class test {
	 public static void main(String[] args) throws Exception {
		 List<String> list =new ArrayList<String>();
		 list.add("1");
		 list.add("12");
		 list.add("13");
		 list.add("0");
		 System.out.println("初始时:"+ list.toString());
		//对集合进行过滤,删除集合中包含“1”的元素
		 list.removeIf("1"::contains);
		 System.out.println("过滤完:" + list.toString());
		 
	 }
}

初始时:[1, 12, 13, 0]
过滤完:[12, 13, 0]

注意contains两种写法之间的差异。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`std::remove_if` 是 STL 一种算法,它可以用于删除容器满足某个条件的元素。 它的函数签名如下: ```c++ template<class ForwardIt, class UnaryPredicate> ForwardIt remove_if(ForwardIt first, ForwardIt last, UnaryPredicate p); ``` 其,`first` 和 `last` 分别表示要进行处理的元素范围,`p` 是一个函数对象,用于判断某个元素是否应该被删除。函数返回值是一个指向被删除元素之后位置的迭代器。 使用 `std::remove_if` 的一般流程如下: 1. 定义一个函数对象或 lambda 表达式,判断某个元素是否应该被删除; 2. 调用 `std::remove_if` 函数,传递要处理的元素范围和判断函数; 3. 根据返回值,使用容器的 `erase` 函数删除被标记为要删除的元素。 下面是一个示例代码: ```c++ #include <algorithm> #include <vector> #include <iostream> int main() { std::vector<int> v{1, 2, 3, 4, 5}; auto is_odd = [](int x) { return x % 2 == 1; }; auto it = std::remove_if(v.begin(), v.end(), is_odd); v.erase(it, v.end()); for (auto i : v) { std::cout << i << " "; } std::cout << std::endl; } ``` 上面的代码,我们定义了一个 lambda 表达式 `is_odd`,用于判断一个整数是否为奇数。然后我们调用 `std::remove_if` 函数,将要处理的元素范围和判断函数传递进去,得到一个指向被删除元素之后位置的迭代器。最后,我们使用容器的 `erase` 函数,删除被标记为要删除的元素,输出剩余的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值