您的位置:首页 > 编程语言 > Java开发

Java8中新增加的集合类

2016-03-17 10:24 381 查看


Java8中新增加的集合类

标签: java
2015-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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: