首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过包含关键字的List<String>过滤,使用stream,Map<String,Object>

通过包含关键字的List<String>过滤,可以使用Java 8中的Stream API和Lambda表达式来实现。下面是一个示例代码:

代码语言:txt
复制
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class KeywordFilter {
    public static void main(String[] args) {
        List<String> keywords = Arrays.asList("keyword1", "keyword2", "keyword3");
        
        List<String> strings = Arrays.asList("This is a string containing keyword1",
                                             "Another string with keyword2",
                                             "No keyword here");
        
        List<String> filteredStrings = strings.stream()
                .filter(s -> keywords.stream().anyMatch(s::contains))
                .collect(Collectors.toList());
        
        System.out.println(filteredStrings);
    }
}

上述代码中,我们首先定义了一个包含关键字的List<String>,即keywords。然后,我们有一个包含多个字符串的List<String>,即strings。接下来,我们使用Stream API对strings进行过滤,只保留包含任何一个关键字的字符串。最后,我们将过滤后的字符串收集到一个新的List中,并打印输出。

这个例子中使用到的Stream API方法有:

  • stream():将List转换为Stream。
  • filter():根据指定的条件过滤元素。
  • anyMatch():判断Stream中是否存在满足指定条件的元素。
  • collect():将Stream中的元素收集到一个新的集合中。

这种通过关键字过滤的方法在实际开发中经常用于搜索、筛选等场景,特别是在处理大量数据时非常高效。

关于腾讯云的相关产品,可以使用腾讯云的云服务器(CVM)来搭建和运行Java应用程序。腾讯云的云服务器提供了多种规格和配置,适用于不同的应用场景。您可以访问腾讯云的官方网站了解更多关于云服务器的信息:腾讯云云服务器

请注意,以上答案仅供参考,具体的实现方式和推荐的产品可能因实际需求和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • java8 新特性

    接口默认方法(Default Methods for Interfaces) Java 8使我们能够通过使用 default 关键字向接口添加非抽象方法实现。 此功能也称为虚拟扩展方法。...::关键字来引用,首先我们定义一个包含多个构造函数简单类: class Person { String firstName; String lastName; Person() {} Person...下面几节将详细解释常用Stream操作: Filter(过滤) 过滤通过一个predicate接口来过滤并只保留符合条件元素,该操作属于中间操作,所以我们可以在过滤结果来应用其他Stream操作...你也可以通过map来讲对象转换成其他类型,map返回Stream类型是根据你map传递进去函数返回值决定。...下面的例子展示了是如何通过并行Stream来提升性能: 首先我们创建一个没有重复元素大表: int max = 1000000; List values = new ArrayList(max)

    52110

    JDK8新特性详解Lambda&Stream

    ,只能有一个抽象方法 1.4 lambda使用前提 2 Stream 2.1为什么使用这个 我们自己定义一个list集合,要使用里面的数据,我们就需要一直循环,多一个需求,就多一次循环,这样是不好...结果集 我们通过stream过滤完数据,需要将结果保存 2.7.1 结果收集到集合中 // 将过滤之后数据转为list集合 List collect =...Stream.of("1", "2").parallel(); 2.13 并行流与串行流对比 2.14 使用并行流线程安全问题 就是我们从数据库查询出list数据,过滤完成之后往新list集合里面添加数据...,我们使用一个Map就很容易解决这个问题,代码如下: String[] arr = {"a", "c", "a", "b", "d", "c"}; Map map =...Mapkey,第二个参数代表每一个key所对应value,在这里每一个元素都对应个数1,第三个参数代表,如果存在相同key,该如何进行合并,这里通过使用Integer::sum,代表将具有相同key

    37110

    Java——Stream数据流(Properties子类、Collection接口加强、MapReduce操作)

    使用时,使用是子类中定义方法 构造方法:public Properties(); 设置属性:public Object setProperties(String key,String value)...-> x.contains("A")); //过滤包含A System.out.println(stream.count()); //输出结果为2 以上只是简单过滤,类似统计操作,没什么意思...super T,A,R> collector) 需要使用Collector接口,该接口可通过java.util.stream.Collectors进行实例化,以List集合收集: public static...)).collect(Collectors.toList()); //过滤包含A System.out.println(list1); 以上filter方法是区分大小写,若把数据都换为小写...,则无法收集,可以使用转换方法: 3)转换 Stream map(Function<?

    55130

    Java开发之Java8 新特性--流式数据处理学习

    比如我们希望对一个包含整数集合中筛选出所有的偶数,并将其封装成为一个新List返回,那么在java8之前,我们需要通过如下代码实现: List evens = new ArrayList...filter 在前面的例子中我们已经演示了如何使用filter,其定义为:Stream filter(Predicate<?...关键字,用于去重处理,distinct基于Object.equals(Object)实现,回到最开始例子,假设我们希望筛选出所有不重复偶数,那么可以添加distinct操作: List<Integer...2.2 映射 在SQL中,借助SELECT关键字后面添加需要字段名称,可以仅输出我们需要字段数据,而流式处理映射操作也是实现这一目的,在java8流式处理中,主要包含两类映射操作:map和flatMap...map 举例说明,假设我们希望筛选出所有专业为计算机科学学生姓名,那么我们可以在filter筛选基础之上,通过map将学生实体映射成为学生姓名字符串,具体实现如下: List names

    1.8K20

    Stream

    学习一下HashMapmerge()函数 按Map键排序 按Map值排序 使用TreeMap按键排序 Mapkey或value是自定义对象,如何实现map排序 Stream流逐行文件处理...()方法 Map.forEach() 使用forEach遍历 List例子 使用forEach 遍历 Map Stream基本API使用 List nameStrs...List转换为管道流 调用filter函数过滤数组元素,过滤方法使用lambda表达式,以L开头元素返回true被保留,其他List元素被过滤掉 然后调用Map函数对管道流中每个元素进行处理,字母全部转换为大写...本节就介绍一个如何Stream API来实现“查找与匹配”。 举例 如果我们不用Stream API实现,查找员工列表中是否包含年龄大于70员工?...Java 8读取文件–过滤行 在此示例中,我们将文件内容读取为Stream。然后,我们将过滤其中包含单词"password"所有行。

    3.9K20

    大数据技术之_16_Scala学习_08_数据结构(下)-集合操作+模式匹配

    第十一章 数据结构(下)-集合操作11.1 集合元素映射-map11.1.1 map 映射函数操作11.1.2 高阶函数基本使用案例1+案例211.1.3 使用 map 映射函数来解决11.1.4...// 取出第一个元素     println("head=" + stream1.head) // head=1     // 使用 tail,会动态向 stream 集合按规则生成新元素     ...// 案例:使用 map 映射 stream 元素并进行一些计算     //创建Stream     def numsForm2(n: BigInt): Stream[BigInt] = n #::...并可以通过带名参数来修改某些属性   */ object CaseClassDemo03 {   def main(args: Array[String]): Unit = {     val amt ...知识点2-通过 @ 表示法将嵌套值绑定到变量。* 绑定剩余 Item 到 rest。 ? 知识点3-不使用 * 绑定剩余 Item 到 rest。 ?

    1.7K00

    生产上常用 JDK 版本 1.7 与 1.8 新特性

    ,并将使用简单代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新API上改进,比如流,函数式接口,Map以及全新日期API 一、接口默认方法...("Java");System.out.println(converted); // "J" 接下来看看构造函数是如何使用::关键字来引用,首先我们定义一个包含多个构造函数简单类: class...下面几节将详细解释常用Stream操作: Filter 过滤 过滤通过一个predicate接口来过滤并只保留符合条件元素,该操作属于中间操作,所以我们可以在过滤结果来应用其他Stream操作(...你也可以通过map来讲对象转换成其他类型,map返回Stream类型是根据你map传递进去函数返回值决定。...下面的例子展示了是如何通过并行Stream来提升性能: 首先我们创建一个没有重复元素大表: int max = 1000000;List values = new ArrayList<

    1.2K20

    干货 | Java8 新特性指导手册

    (converted); // "J" 接下来,我们再来看看如何通过 :: 关键字来引用类构造器。...什么是 Stream 流? 简单来说,我们可以使用 java.util.Stream 对一个包含一个或多个元素集合做各种操作。这些操作可能是 中间操作 亦或是 终端操作。...Filter 过滤 首先,我们创建一个 List 集合: List stringCollection = new ArrayList(); stringCollection.add(...顺序流操作是单线程操作,而并行流是通过多线程来处理,能够充分利用物理机 多核 CPU 优势,同时处理速度更快。 首先,我们创建一个包含 1000000 UUID list 集合。...但是,我们可以对其 key, values, entry 使用 流操作,如 map.keySet().stream(), map.values().stream() 和 map.entrySet().stream

    1.3K20

    java8新特性(拉姆达表达式lambda)

    java 8提供 @FunctionalInterface作为注解,这个注解是非必须,只要接口符合函数式接口标准(即只包含一个方法接口),虚拟机会自动判断, 但 最好在接口上使用注解@FunctionalInterface...只需在方法名前面加个default关键字即可。...它具有过滤、映射以及减少遍历数等方法,这些方法分两种:中间方法和终端方法,“流”抽象天生就该是持续,中间方法永远返回Stream,因此如果我们要获取最终结果的话,必须使用终点操作才能收集流产生最终结果...Stream接口暴露了一个filter方法,它可以接受表示操作Predicate实现来使用定义了过滤条件lambda表达式。...) > 20); //过滤年龄大于20 } } map 假使我们现在过滤了一些数据,比如转换对象时候。

    42930

    JAVA8十大新特性详解

    ("Java"); System.out.println(converted); // "J" 接下来看看构造函数是如何使用::关键字来引用,首先我们定义一个包含多个构造函数简单类: class...Stream 创建需要指定一个数据源,比如 java.util.Collection子类,List或者Set, Map不支持。Stream操作可以串行执行或者并行执行。...下面几节将详细解释常用Stream操作: Filter 过滤 过滤通过一个predicate接口来过滤并只保留符合条件元素,该操作属于中间操作,所以我们可以在过滤结果来应用其他Stream操作(...你也可以通过map来讲对象转换成其他类型,map返回Stream类型是根据你map传递进去函数返回值决定。...下面的例子展示了是如何通过并行Stream来提升性能: 首先我们创建一个没有重复元素大表 int max = 1000000; List values = new ArrayList<

    93231

    java集合【1】--从集合接口框架说起

    Iterable接口:主要是实现遍历功能 Set接口:无序,元素不可重复,访问元素只能通过元素本身来访问。 List接口:有序且可重复,可以根据元素索引来访问集合中元素。...,这个是Java 8 新关键字,以前接口所有接口,具体子类都必须实现,而对于deafult关键字标识方法,其子类可以不用实现,这也是接口规范发生变化一点。...以发挥多核时代处理器性能,java默认在集合框架中提供了一个默认Spliterator实现,底层也就是Stream.isParallel()实现,我们可以看一下源码: // stream使用就是...() {} //获取并行流 里面获取并行流方法parallelStream(),其实就是通过默认ForkJoinPool(主要用来使用分治法(Divide-and-Conquer Algorithm...HashTable:对比与HashMap主要是使用关键字synchronize,加上同步锁,线程安全。 (二)总结 这些集合原始接口到底是什么?为什么需要?

    52420

    java集合【1】——— 从集合接口框架说起

    ,这个是Java 8 新关键字,以前接口所有接口,具体子类都必须实现,而对于deafult关键字标识方法,其子类可以不用实现,这也是接口规范发生变化一点。...以发挥多核时代处理器性能,java默认在集合框架中提供了一个默认Spliterator实现,底层也就是Stream.isParallel()实现,我们可以看一下源码: // stream使用就是...//是否包含在集合中 boolean containsAll(Collection c) //是否包含所有的元素 Iterator iterator() // 获取迭代器 Object...() {} //获取并行流 里面获取并行流方法parallelStream(),其实就是通过默认ForkJoinPool(主要用来使用分治法(Divide-and-Conquer Algorithm...HashTable:对比与HashMap主要是使用关键字synchronize,加上同步锁,线程安全。 (二)总结 这些集合原始接口到底是什么?为什么需要?

    75220
    领券