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并进行高效编程的开发者来说,这是一本不可或缺的参考书籍。通过阅读本书,开发者不仅能够学习到最新的编程技术,还能提高自己的编程水平和项目实践能力。
默认方法通常用于扩展已有的接口,如`Iterable`接口在Java 8中新增了`forEach()`方法,便于使用Lambda表达式遍历集合。 6. **Optional类**: `Optional<T>`是一个容器对象,可能包含或者不包含非null值。它设计的...
`Optional<T>`接口是Java 8新增的一个容器对象,旨在解决空指针异常的问题。通过使用`Optional`,可以在程序中明确地处理可能为`null`的情况。 示例代码: ```java Optional<String> optional = Optional.of("bam...
- **函数接口**:为了支持lambda表达式,Java 8定义了一些重要的函数接口,如`Function,R>`、`Predicate<T>`、`Consumer<T>`和`Supplier<T>`,它们分别代表了一种特定的函数行为。 - **Stream API**:Stream API...
3. **函数式接口**:为了支持lambda表达式,Java SE 8定义了一些新的函数式接口,如`java.util.function.Function`、`java.util.function.Consumer`和`java.util.function.Predicate`等,它们在处理函数式编程任务时...
3. **Stream API**:Stream API是Java 8中的另一个重要特性,它提供了一种新的数据处理方式,可以对集合进行声明式、链式操作,使得数据处理更加高效且易于理解。你可以用它进行过滤、映射、排序等多种操作。 4. **...
Java 8新增了一些内置的函数式接口,例如`Predicate<T>`用于断言条件,`Function, R>`用于映射操作,`Supplier<T>`用于无参数产生值,`Consumer<T>`用于消费类型T的对象,以及`Comparator<T>`用于比较对象。...
这极大地改进了对并发处理的支持,尤其是与Java的Stream API结合使用时,可以方便地进行集合操作和数据处理。 另一个重要特性是默认方法,这是在接口中添加方法的一种方式,不强制实现类去覆盖它。这种设计使得在...
这个"java8集合源码-java8-problems-"项目很显然是为了帮助开发者深入理解和掌握Java 8在集合API上的改进和新增功能。集合框架是Java编程的核心部分,它提供了数据存储和操作的接口与实现,如List、Set、Map等。Java...
8. **Parallel Collectors**:Java 8的集合框架扩展了并行流的支持,使得集合的转换和聚合操作可以通过并行化实现,显著提高性能。 9. **Map接口增强**:Java 8对Map接口进行了扩展,新增了诸如putIfAbsent()、...
Java 8提供了一些预定义的函数式接口,例如`Runnable`、`Callable`、`Comparator`等,并新增了`Predicate`、`Supplier`、`Consumer`和`Function`等。 3. **方法引用**:除了Lambda表达式,Java 8还引入了方法引用,...
2. Stream API:Stream API是Java 8的另一大亮点,提供了一种对集合数据进行操作的新方式。Stream API支持链式操作,如filter、map、reduce等,可以进行高效的并行计算。通过Stream API,开发者可以写出更加简洁、易...
Java 8加强了对函数式编程的支持,定义了一系列预定义的函数式接口,如`Function,R>`、`Predicate<T>`、`Supplier<T>`等,这些接口只有一个抽象方法,非常适合用于Lambda表达式。 八、并行流 并行流是Stream API的...
总之,《Java 8 test》不仅是一本介绍Java 8新特性的书籍,还涵盖了如何利用这些新特性进行高效编程以及如何使用XXL-Job这样的工具来进行任务管理和调度等内容。无论是对于初学者还是有经验的开发者来说,都是一本...
Java 8新增了一些预定义的函数式接口,如Function(接受一个参数并产生一个结果)、Predicate(接受一个参数并返回一个布尔值)和Consumer(接受一个参数但不返回值)。 3. **Stream API**: Stream API是Java 8中...
这些接口只有一个抽象方法,如`Runnable`, `Callable`, 和新增的`Consumer`, `Supplier`, `Function`, `Predicate`等。它们为Lambda提供了一种类型安全的载体。 3. **Stream API**:Stream API是处理集合数据的新...
Java 8定义了一些内置的函数式接口,如Function、Predicate、Supplier等,方便开发者使用Lambda表达式。 九、新的集合工厂方法 Java 8在集合接口中添加了新的工厂方法,如`Collectors.toList()`,使创建集合变得更...
5. **Optional类**:Java 8引入`Optional<T>`来处理可能为null的值,避免空指针异常。它可以被视作一个容器对象,如果值存在则isPresent()返回true,调用get()会返回该对象。 6. **默认方法**:接口中新增的默认...
3. **Stream API**:Java 8新增的Stream API允许对集合进行高效且易读的顺序和并行操作。它可以用于过滤、映射、归约等操作,非常适合数据处理和分析。 4. **默认方法**:为了解决接口扩展问题,Java 8引入了默认...
3. **Stream API**:Stream API是Java 8的新特性,提供了一种对集合数据进行操作的全新方式。它支持串行和并行操作,如过滤、映射、排序、聚合等,提高了代码的可读性和效率。 4. **日期和时间API**:Java 8通过...