通过Predicate接口将字符串数组中符合要求的字符串拼装筛到集合ArrayList中

本文通过具体示例展示了如何利用 Java 中的 Predicate 接口筛选字符串数组中的元素,并将其存储到 ArrayList 中。筛选条件包括姓名长度大于2及年龄大于33岁。此示例有助于理解函数式编程接口的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.ArrayList;
import java.util.function.Predicate;

/*
    - 通过Predicate接口将字符串数组中符合要求的字符串拼装筛到集合ArrayList中
      并遍历ArrayList集合
    - 同时满足如下要求:姓名长度大于2;年龄大于33
 */
public class PredicateTest {
    public static void main(String[] args) {
        // 创建集合数组对象,
        String[] strArray = {"小林子,30", "小岩,34", "小小玉,35", "貂蝉,31", "何俊贤,33"};
        // 定义一个集合存放结果
        // 调用chek方法,对集合对象数组进行操作,设置判断条件一,
        // 姓名长度大于2,使用,split方法获取字符串对象,用其长度判断是否大于二
        // 判断条件二
        // 获取到字符串对象,调用Integer.parseInt方法转化为int数据类型,再判断是否大于33
        ArrayList<String> arrayList = chek(strArray, s -> s.split(",")[0].length() > 2,
                s -> Integer.parseInt(s.split(",")[1]) > 33);
        // 增强for循环遍历,得到字符串对象,打印输出
        for (String string : arrayList) {
            System.out.println(string);
        }
    }

    // 对集合操作,使用Predicate函数接口,作为判断条件
    private static ArrayList<String> chek(String[] s, Predicate<String> pre1, Predicate<String> pre2) {
        // 创建集合对象
        ArrayList<String> array = new ArrayList<String>();
        // 对集合对象,遍历,得到字符串对象
        for (String str : s) {
            //对得到的字符串对象进行判断,将得到正确结果给到集合中
            if (pre1.and(pre2).test(str)) {
                array.add(str);
            }
        }
        // 返回集合
        return array;
    }


}
### C++ 中字符串类型数组排序规则 在 C++ 中,对于字符串类型的数组进行排序遵循特定的规则。当涉及到字符串比较时,默认情况下会按照字典顺序(lexicographical order)来进行对比[^1]。 #### 使用标准库 `sort` 函数实现字符串数组排序 C++ 提供了 `<algorithm>` 头文件中的 `std::sort()` 函数来简化这一过程。此函数接受两个迭代器作为参数指定要排序范围,并可选地接收第三个自定义比较谓词(predicate)。如果不提供第三参数,则采用默认升序方式处理元素之间的关系: ```cpp #include <iostream> #include <vector> #include <string> #include <algorithm> int main() { std::vector<std::string> words = {"banana", "apple", "orange"}; // 默认按字母表顺序从小到大排序 std::sort(words.begin(), words.end()); for (auto& word : words) { std::cout << word << "\n"; } return 0; } ``` 上述代码展示了如何使用内置的 `std::sort()` 对字符串向量执行简单的升序排列操作。 #### 自定义排序逻辑 如果希望改变默认行为,比如降序或其他特殊条件下的排序需求,可以通过传递额外的比较函数给 `std::sort()` 来达成目的。下面的例子实现了基于字符串长度而非其内容本身的逆序排序方法: ```cpp // 定义一个 lambda 表达式用于比较两个字符串对象 bool compare_by_length(const std::string &a, const std::string &b){ return a.size() > b.size(); // 长度较长者优先 } ... // 应用带有定制化准则的 sort() std::sort(words.begin(), words.end(), compare_by_length); ``` 通过这种方式,可以根据具体应用场景灵活调整排序策略而不局限于基本的字典顺序[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值