Collection和Iterator接口
来源:互联网 发布:c语言左移右移 编辑:程序博客网 时间:2024/05/22 07:06
下面主要是用代码来介绍各种方法的使用
使用Lambda表达式遍历集合
Java8为Iterable接口新增了一个forEach默认方法,该方法所需参数的类型是一个函数式接口。
public class CollectionEach{ public static void main(String[] args) { // 创建一个集合 Collection books = new HashSet(); books.add("轻量级Java EE企业应用实战"); books.add("疯狂Java讲义"); books.add("疯狂Android讲义"); // 调用forEach()方法遍历集合 books.forEach(obj -> System.out.println("迭代集合元素:" + obj)); }}
使用Java8增强的Iterator遍历集合元素
public class IteratorTest{ public static void main(String[] args) { // 创建集合、添加元素的代码与前一个程序相同 Collection books = new HashSet(); books.add("轻量级Java EE企业应用实战"); books.add("疯狂Java讲义"); books.add("疯狂Android讲义"); // 获取books集合对应的迭代器 Iterator it = books.iterator(); while(it.hasNext()) { // it.next()方法返回的数据类型是Object类型,因此需要强制类型转换 String book = (String)it.next(); System.out.println(book); if (book.equals("疯狂Java讲义")) { // 从集合中删除上一次next方法返回的元素 it.remove(); } // 对book变量赋值,不会改变集合元素本身 book = "测试字符串"; //① } System.out.println(books); }}
使用Java8新增的Predicate操作集合
Java8为Collection集合新增了一个removeIf(Predicate filter)方法,该方法将会批量删除符合filter条件的所有元素。该方法需要一个Predicate对象作为参数,Predicate也是函数式接口,因此可使用Lambda表达式作为参数。
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)); } 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; }}
使用Java8新增的Stream操作集合
java8新增了Stream、IntStream、LongStream、DoubleStream等流式API,这些API代表多个支持串行和并行聚集操作的元素。
独立使用Stream的步骤如下:
1.使用Stram或XxxStream的builder()类方法创建该Stream对应的Builder。
2.重复调用Builder的add()方法向该流中添加多个元素。
3.调用Builder的build()方法获取对应的Stream。
4.调用Stream的聚集方法。
Stream提供了大量的方法进行聚集操作,这些方法既可以是“中间的”,也可以是“末端的”。
中间方法:中间操作允许流保持打开状态,并允许直接调用后续方法。中间方法的返回值是另外一个流。
末端方法:末端方法是对流的最终操作。当对某个Stream执行末端方法后,该流将会被“消耗”且不再可用。
public class CollectionStream{ public static void main(String[] args) { // 创建books集合、为books集合添加元素的代码与8.2.5小节的程序相同。 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(books.stream() .filter(ele->((String)ele).contains("疯狂")) .count()); // 输出4 // 统计书名包含“Java”子串的图书数量 System.out.println(books.stream() .filter(ele->((String)ele).contains("Java") ) .count()); // 输出2 // 统计书名字符串长度大于10的图书数量 System.out.println(books.stream() .filter(ele->((String)ele).length() > 10) .count()); // 输出2 // 先调用Collection对象的stream()方法将集合转换为Stream, // 再调用Stream的mapToInt()方法获取原有的Stream对应的IntStream books.stream().mapToInt(ele -> ((String)ele).length()) // 调用forEach()方法遍历IntStream中每个元素 .forEach(System.out::println);// 输出8 11 16 7 8 }}
阅读全文
0 0
- Collection和Iterator接口
- Collection接口和Iterator接口
- Java中Collection和Iterator接口
- Collection和Iterator接口方法详解
- Collection 与iterator接口
- 4.2.2集合类 Collection接口和 Iterator接口
- (6) 集合之Collection接口和Iterator方法、Collection接口和Collections工具类
- Java的类集框架二:Collection和Iterator接口
- Java集合概述集Collection 和 Iterator 接口用法详解
- Java基础-集合框架2 Collection和Iterator接口
- Collection、Iterator接口、foreach循环
- 用iterator接口遍历collection
- java--collection和Iterator
- Collection 和 Iterator
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
- U-Boot 1.1.6 移植到2440 (一)
- E
- 超松弛迭代法(SOR)
- 计算方法 实验四 解线性方程组的迭代法
- ntpd和chrony
- Collection和Iterator接口
- openldap服务器安装配置
- php常用字符串函数小结
- 数组与指针(1)
- Nginx+Tomcat实现负载均衡动静分离集群
- TensorFlow学习笔记01:Win10下使用Anaconda安装TensorFlow
- 笔试题
- 蓝桥杯 ALGO-1 算法训练 区间k大数查询(排序 查找)
- 使用Matplotlib创建散点图