Java8中新增加的集合类
2016-03-17 10:24
381 查看
Java8中新增加的集合类
标签: java2015-12-11 17:44 149人阅读 评论(0) 收藏 举报
分类:
Java(8)
前言
在平常的开发中,有时我们需要存放多个数据,因此也就有了集合的存在,这篇博客着重讲解一下java8给我们带来的一些类关于Collection的操作。
Collection接口
正如上图所示,Collection接口位于最底层接口,为所有的集合操作提供了一些公共的方法。比如add、addAll、clear、contains、toArray等方法
[java] view
plaincopy
/**
* @FileName: CollectionTest.java
* @Package:com.collection
* @Description: TODO
* @author: LUCKY
* @date:2015年12月2日 上午11:32:48
* @version V1.0
*/
package com.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
/**
* @ClassName: CollectionTest
* @Description: TODO
* @author: LUCKY
* @date:2015年12月2日 上午11:32:48
*/
public class CollectionTest {
public static void main(String[] args) {
Collection c=new ArrayList();
//添加元素
c.add("孙悟空");
//虽然集合里不能放置基本类型的值,但java支持自动装箱操作
c.add(6);
System.out.println("集合中的元素个数为"+c.size());
//删除指定的元素
c.remove(6);
System.out.println("集合中是否包含\"孙悟空\"字符串"+c.contains("孙悟空"));
Collection books=new HashSet();
books.add("轻量级java EE企业应用实战");
books.add("疯狂java讲义");
System.out.println("c集合是否完全包含books集合"+c.containsAll(books));
//删除c集合中的所有元素
c.clear();
//控制books集合里只剩下c集合里也包含的元素
books.retainAll(c);
System.out.println("books集合的元素"+books);
}
}
那么在java8中为我们增加了那些好的遍历集合的操作?
1.Lambda表达式
在java8中新增加了一个forEach方法,可以使用Lambda表达式来遍历集合元素
[java] view
plaincopy
<span style="font-family:Comic Sans MS;font-size:18px;">
/**
* @FileName: CollectionEach.java
* @Package:com.collection
* @Description: TODO
* @author: LUCKY
* @date:2015年12月2日 上午11:40:20
* @version V1.0
*/
package com.collection;
import java.util.Collection;
import java.util.HashSet;
import java.util.function.Consumer;
/**
* @ClassName: CollectionEach
* @Description: TODO
* @author: LUCKY
* @date:2015年12月2日 上午11:40:20
*/
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));
}
}
</span>
2.使用Lambda遍历Iterator
java8中为Iterator增加了一个forEachRemaining方法,,也可以使用Lambda来遍历
[java] view
plaincopy
<span style="font-family:Comic Sans MS;font-size:18px;">/**
* @FileName: IteratorEach.java
* @Package:com.collection
* @Description: TODO
* @author: LUCKY
* @date:2015年12月2日 下午12:01:20
* @version V1.0
*/
package com.collection;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
/**
* @ClassName: IteratorEach
* @Description: TODO
* @author: LUCKY
* @date:2015年12月2日 下午12:01:20
*/
public class IteratorEach {
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();
//使用lambda表达式(目标类型是Comsumer)来遍历集合元素
it.forEachRemaining(obj ->System.out.println("输出的结果是"+obj));
}
}
</span>
3.java8中增加的Predicate操作集合
在java8中为Collection集合增加了一个removeIF方法,也可以用来操作lambda
[java] view
plaincopy
<span style="font-family:Comic Sans MS;font-size:18px;">
package com.collection;
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, obj->((String)obj).contains("疯狂")));
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)
相关文章推荐
- Java读取文件目录和文件,并且按照文件层次输出文件名和目录名。
- java汉字和unicode互转
- Myeclipse jsp显示黑块的解决办法
- Java入门编程(作业)实现总结(二)
- springmvc中对静态资源的处理
- Java知识点汇总
- Eclipse中Properties中文显示不自动转成Unicode
- Java EE 课堂随笔
- Java多线程,wait,notify,notifyAll的使用例子
- 用JAVA连接SQL SERVER 的做法 指导人:徐哥
- java.net.URLEncode编码 与 URLDecode解码问题
- 【转】详细分析Java中断机制
- Struts中OGNL语言
- MyEclipse XFire Web Service
- 【leetcode】【223】Rectangle Area
- java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexO
- eclipse 常见问题解决
- Java之美[从菜鸟到高手演变]之设计模式
- Java获取当前时间的年月日时分秒方法
- Java之美[从菜鸟到高手演变]之设计模式