`
cakin24
  • 浏览: 1389825 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用Java 8新增的Predicate操作来操作集合

    博客分类:
  • java
阅读更多

Java 8为Collection集合新增了一些需要Predicate参数的方法,这些方法可以对集合元素进行过滤。程序可使用Lambda表达式构建Predicate对象。

1 代码示例

import java.util.*;
import java.util.function.*;

public class PredicateTest2
{
	public static void main(String[] args)
	{
		// 创建books集合、为books集合添加元素的代码与前一个程序相同。
		Collection books = new HashSet();
		books.add(new String("轻量级Java EE企业应用实战"));
		books.add(new String("疯狂Java讲义"));
		books.add(new String("疯狂iOS讲义"));
		books.add(new String("疯狂Ajax讲义"));
		books.add(new String("疯狂Android讲义"));
		// 统计书名包含“疯狂”子串的图书数量
		System.out.println(calAll(books , ele->((String)ele).contains("疯狂")));
		// 统计书名包含“Java”子串的图书数量
		System.out.println(calAll(books , ele->((String)ele).contains("Java")));
		// 统计书名字符串长度大于10的图书数量
		System.out.println(calAll(books , ele->((String)ele).length() > 10));
		
		// 使用Lambda表达式(目标类型是Predicate)过滤集合
		books.removeIf(ele -> ((String)ele).length() < 10);
		System.out.println(books);
	}
	public static int calAll(Collection books , Predicate p)
	{
		int total = 0;
		for (Object obj : books)
		{
			// 使用Predicate的test()方法判断该对象是否满足Predicate指定的条件
			if (p.test(obj))
			{
				total ++;
			}
		}
		return total;
	}
}

 

2 运行结果

4
2
2
[疯狂Android讲义, 轻量级Java EE企业应用实战]

 

3 代码分析

该代码完成了以下4个需求

  • 统计书名中出现“疯狂”字符串的图书数量。
  • 统计书名中出现“Java”字符串图书数量。
  • 统计书名长度大于10的图书数量。
  • 删除书名长度小于10的图书。
分享到:
评论

相关推荐

    Java 8编程入门官方教程

    根据提供的文件信息,我们可以从标题...对于希望快速掌握Java 8并进行高效编程的开发者来说,这是一本不可或缺的参考书籍。通过阅读本书,开发者不仅能够学习到最新的编程技术,还能提高自己的编程水平和项目实践能力。

    OnJava8.zip

    默认方法通常用于扩展已有的接口,如`Iterable`接口在Java 8中新增了`forEach()`方法,便于使用Lambda表达式遍历集合。 6. **Optional类**: `Optional&lt;T&gt;`是一个容器对象,可能包含或者不包含非null值。它设计的...

    JAVA8新特性各种用法详解

    `Optional&lt;T&gt;`接口是Java 8新增的一个容器对象,旨在解决空指针异常的问题。通过使用`Optional`,可以在程序中明确地处理可能为`null`的情况。 示例代码: ```java Optional&lt;String&gt; optional = Optional.of("bam...

    java8参考手册

    - **函数接口**:为了支持lambda表达式,Java 8定义了一些重要的函数接口,如`Function,R&gt;`、`Predicate&lt;T&gt;`、`Consumer&lt;T&gt;`和`Supplier&lt;T&gt;`,它们分别代表了一种特定的函数行为。 - **Stream API**:Stream API...

    Java Platform SE 8

    3. **函数式接口**:为了支持lambda表达式,Java SE 8定义了一些新的函数式接口,如`java.util.function.Function`、`java.util.function.Consumer`和`java.util.function.Predicate`等,它们在处理函数式编程任务时...

    写给大忙人看的Java SE 8

    3. **Stream API**:Stream API是Java 8中的另一个重要特性,它提供了一种新的数据处理方式,可以对集合进行声明式、链式操作,使得数据处理更加高效且易于理解。你可以用它进行过滤、映射、排序等多种操作。 4. **...

    Java8简明教程.pdf

    Java 8新增了一些内置的函数式接口,例如`Predicate&lt;T&gt;`用于断言条件,`Function, R&gt;`用于映射操作,`Supplier&lt;T&gt;`用于无参数产生值,`Consumer&lt;T&gt;`用于消费类型T的对象,以及`Comparator&lt;T&gt;`用于比较对象。...

    Java SE 8 Documentation(b54)官方参考文档CHM版

    这极大地改进了对并发处理的支持,尤其是与Java的Stream API结合使用时,可以方便地进行集合操作和数据处理。 另一个重要特性是默认方法,这是在接口中添加方法的一种方式,不强制实现类去覆盖它。这种设计使得在...

    java8集合源码-java8-problems-:java8练习题及解答

    这个"java8集合源码-java8-problems-"项目很显然是为了帮助开发者深入理解和掌握Java 8在集合API上的改进和新增功能。集合框架是Java编程的核心部分,它提供了数据存储和操作的接口与实现,如List、Set、Map等。Java...

    corejava8.rar

    8. **Parallel Collectors**:Java 8的集合框架扩展了并行流的支持,使得集合的转换和聚合操作可以通过并行化实现,显著提高性能。 9. **Map接口增强**:Java 8对Map接口进行了扩展,新增了诸如putIfAbsent()、...

    java8官方教程英文版

    Java 8提供了一些预定义的函数式接口,例如`Runnable`、`Callable`、`Comparator`等,并新增了`Predicate`、`Supplier`、`Consumer`和`Function`等。 3. **方法引用**:除了Lambda表达式,Java 8还引入了方法引用,...

    Java 8 源码

    2. Stream API:Stream API是Java 8的另一大亮点,提供了一种对集合数据进行操作的新方式。Stream API支持链式操作,如filter、map、reduce等,可以进行高效的并行计算。通过Stream API,开发者可以写出更加简洁、易...

    Java8+jdk1.8中文文档.zip

    Java 8加强了对函数式编程的支持,定义了一系列预定义的函数式接口,如`Function,R&gt;`、`Predicate&lt;T&gt;`、`Supplier&lt;T&gt;`等,这些接口只有一个抽象方法,非常适合用于Lambda表达式。 八、并行流 并行流是Stream API的...

    Java 8 test

    总之,《Java 8 test》不仅是一本介绍Java 8新特性的书籍,还涵盖了如何利用这些新特性进行高效编程以及如何使用XXL-Job这样的工具来进行任务管理和调度等内容。无论是对于初学者还是有经验的开发者来说,都是一本...

    Java-Java函数式编程教程

    Java 8新增了一些预定义的函数式接口,如Function(接受一个参数并产生一个结果)、Predicate(接受一个参数并返回一个布尔值)和Consumer(接受一个参数但不返回值)。 3. **Stream API**: Stream API是Java 8中...

    Java8新特性终极指南Java开发Java经验技巧共27

    这些接口只有一个抽象方法,如`Runnable`, `Callable`, 和新增的`Consumer`, `Supplier`, `Function`, `Predicate`等。它们为Lambda提供了一种类型安全的载体。 3. **Stream API**:Stream API是处理集合数据的新...

    JAVA JDK8 新特性代码详细讲解

    Java 8定义了一些内置的函数式接口,如Function、Predicate、Supplier等,方便开发者使用Lambda表达式。 九、新的集合工厂方法 Java 8在集合接口中添加了新的工厂方法,如`Collectors.toList()`,使创建集合变得更...

    java8hssbc_jb51.rar

    5. **Optional类**:Java 8引入`Optional&lt;T&gt;`来处理可能为null的值,避免空指针异常。它可以被视作一个容器对象,如果值存在则isPresent()返回true,调用get()会返回该对象。 6. **默认方法**:接口中新增的默认...

    JAVA8最新教程

    3. **Stream API**:Java 8新增的Stream API允许对集合进行高效且易读的顺序和并行操作。它可以用于过滤、映射、归约等操作,非常适合数据处理和分析。 4. **默认方法**:为了解决接口扩展问题,Java 8引入了默认...

    Java SE 8_API

    3. **Stream API**:Stream API是Java 8的新特性,提供了一种对集合数据进行操作的全新方式。它支持串行和并行操作,如过滤、映射、排序、聚合等,提高了代码的可读性和效率。 4. **日期和时间API**:Java 8通过...

Global site tag (gtag.js) - Google Analytics