Java8中新增加的集合类

来源:互联网 发布:剑3萝莉捏脸数据下载 编辑:程序博客网 时间:2024/05/21 12:45
 

Java8中新增加的集合类

标签: java
 149人阅读 评论(0) 收藏 举报
 分类:
 
前言
 在平常的开发中,有时我们需要存放多个数据,因此也就有了集合的存在,这篇博客着重讲解一下java8给我们带来的一些类关于Collection的操作。


 Collection接口

  正如上图所示,Collection接口位于最底层接口,为所有的集合操作提供了一些公共的方法。比如add、addAll、clear、contains、toArray等方法

[java] view plaincopy
  1.    
  2. /**      
  3.  * @FileName: CollectionTest.java    
  4.  * @Package:com.collection    
  5.  * @Description: TODO   
  6.  * @author: LUCKY     
  7.  * @date:2015年12月2日 上午11:32:48    
  8.  * @version V1.0      
  9.  */  
  10. package com.collection;  
  11.   
  12.   
  13. import java.util.ArrayList;  
  14. import java.util.Collection;  
  15. import java.util.HashSet;  
  16.   
  17.   
  18. /**   
  19.  * @ClassName: CollectionTest    
  20.  * @Description: TODO   
  21.  * @author: LUCKY   
  22.  * @date:2015年12月2日 上午11:32:48      
  23.  */  
  24. public class CollectionTest {  
  25.   
  26.   
  27.     public static void main(String[] args) {  
  28.         Collection c=new ArrayList();  
  29.         //添加元素  
  30.         c.add("孙悟空");  
  31.         //虽然集合里不能放置基本类型的值,但java支持自动装箱操作  
  32.         c.add(6);  
  33.         System.out.println("集合中的元素个数为"+c.size());  
  34.         //删除指定的元素  
  35.         c.remove(6);  
  36.         System.out.println("集合中是否包含\"孙悟空\"字符串"+c.contains("孙悟空"));  
  37.         Collection books=new HashSet();  
  38.         books.add("轻量级java EE企业应用实战");  
  39.         books.add("疯狂java讲义");  
  40.         System.out.println("c集合是否完全包含books集合"+c.containsAll(books));  
  41.         //删除c集合中的所有元素  
  42.         c.clear();  
  43.         //控制books集合里只剩下c集合里也包含的元素  
  44.           
  45.         books.retainAll(c);  
  46.         System.out.println("books集合的元素"+books);  
  47.     }  
  48. }  



 那么在java8中为我们增加了那些好的遍历集合的操作?


 1.Lambda表达式
 在java8中新增加了一个forEach方法,可以使用Lambda表达式来遍历集合元素
[java] view plaincopy
  1. <span style="font-family:Comic Sans MS;font-size:18px;">   
  2. /**      
  3.  * @FileName: CollectionEach.java    
  4.  * @Package:com.collection    
  5.  * @Description: TODO   
  6.  * @author: LUCKY     
  7.  * @date:2015年12月2日 上午11:40:20    
  8.  * @version V1.0      
  9.  */  
  10. package com.collection;  
  11.   
  12.   
  13. import java.util.Collection;  
  14. import java.util.HashSet;  
  15. import java.util.function.Consumer;  
  16.   
  17.   
  18. /**   
  19.  * @ClassName: CollectionEach    
  20.  * @Description: TODO   
  21.  * @author: LUCKY   
  22.  * @date:2015年12月2日 上午11:40:20      
  23.  */  
  24. public class CollectionEach {  
  25.   
  26.   
  27.     public static void main(String[] args) {  
  28.         //创建一个集合  
  29.         Collection books=new HashSet();  
  30.         books.add("轻量级java EE 企业应用实战");  
  31.         books.add("疯狂java讲义");  
  32.         books.add("疯狂android讲义");  
  33.         //调用foreach方法循环遍历集合  
  34.         books.forEach(obj->System.out.println("迭代元素:"+obj));  
  35.     }  
  36. }  
  37. </span>  



 2.使用Lambda遍历Iterator

 java8中为Iterator增加了一个forEachRemaining方法,,也可以使用Lambda来遍历

[java] view plaincopy
  1. <span style="font-family:Comic Sans MS;font-size:18px;">/**      
  2.  * @FileName: IteratorEach.java    
  3.  * @Package:com.collection    
  4.  * @Description: TODO   
  5.  * @author: LUCKY     
  6.  * @date:2015年12月2日 下午12:01:20    
  7.  * @version V1.0      
  8.  */  
  9. package com.collection;  
  10.   
  11.   
  12. import java.util.Collection;  
  13. import java.util.HashSet;  
  14. import java.util.Iterator;  
  15.   
  16.   
  17. /**   
  18.  * @ClassName: IteratorEach    
  19.  * @Description: TODO   
  20.  * @author: LUCKY   
  21.  * @date:2015年12月2日 下午12:01:20      
  22.  */  
  23. public class IteratorEach {  
  24.   
  25.   
  26.     public static void main(String[] args) {  
  27.         Collection books=new HashSet();  
  28.         books.add("轻量级java EE 企业应用实战");  
  29.         books.add("疯狂java讲义");  
  30.         books.add("疯狂android讲义");  
  31.         //获取books集合对应的迭代器  
  32.         Iterator it=books.iterator();  
  33.         //使用lambda表达式(目标类型是Comsumer)来遍历集合元素  
  34.         it.forEachRemaining(obj ->System.out.println("输出的结果是"+obj));  
  35.     }  
  36. }  
  37. </span>  



3.java8中增加的Predicate操作集合

 在java8中为Collection集合增加了一个removeIF方法,也可以用来操作lambda

[java] view plaincopy
  1. <span style="font-family:Comic Sans MS;font-size:18px;">   
  2. package com.collection;  
  3. import java.util.*;  
  4. import java.util.function.*;  
  5. public class PredicateTest2  
  6. {  
  7.     public static void main(String[] args)  
  8.     {  
  9.         // 创建books集合、为books集合添加元素的代码与前一个程序相同。  
  10.         Collection books = new HashSet();  
  11.         books.add(new String("轻量级Java EE企业应用实战"));  
  12.         books.add(new String("疯狂Java讲义"));  
  13.         books.add(new String("疯狂iOS讲义"));  
  14.         books.add(new String("疯狂Ajax讲义"));  
  15.         books.add(new String("疯狂Android讲义"));  
  16.         // 统计书名包含“疯狂”子串的图书数量  
  17.         System.out.println(calAll(books, obj->((String)obj).contains("疯狂")));  
  18.         System.out.println(calAll(books , ele->((String)ele).contains("疯狂")));  
  19.         // 统计书名包含“Java”子串的图书数量  
  20.         System.out.println(calAll(books , ele->((String)ele).contains("Java")));  
  21.         // 统计书名字符串长度大于10的图书数量  
  22.         System.out.println(calAll(books , ele->((String)ele).length() > 10));  
  23.     }  
  24.     public static int calAll(Collection books , Predicate p)  
0 0
原创粉丝点击