Java 集合深入理解:Collection
作者:张拭心 发布时间:[ 2016/10/10 10:02:51 ] 推荐标签:Java 集合 Collection
还有一些操作整个集合的方法,比如 :
· boolean containsAll(Collection<?> c)
是否包含指定集合 c 的全部元素
· boolean addAll(Collection<? extends E> c)
添加集合 c 中所有的元素到本集合中,如果集合有改变返回 true
· boolean removeAll(Collection<?> c)
删除本集合中和 c 集合中一致的元素,如果集合有改变返回 true
· boolean retainAll(Collection<?> c)
保留本集合中 c 集合中没有的元素,如果集合有改变返回 true
· void clear()
删除所有元素
还有对数组操作的方法:
· Object[] toArray()
返回一个包含集合中所有元素的数组
· <T> T[] toArray(T[] a)
返回一个包含集合中所有元素的数组,运行时根据集合元素的类型指定数组的类型
在 JDK 8 以后,Collection 接口还提供了从集合获取连续的或者并发的流:
· Stream<E> stream()
· Stream<E> parallelStream()
点击这里了解流 Stream.
遍历 Collection 的几种方式:
1、for-each语法
Collection<Person> persons = new ArrayList<Person>();
for (Person person : persons) {
System.out.println(person.name);
}
2、使用 Iterator 迭代器
Collection<Person> persons = new ArrayList<Person>();
Iterator iterator = persons.iterator();
while (iterator.hasNext) {
System.out.println(iterator.next);
}
3、使用 aggregate operations 聚合操作
Collection<Person> persons = new ArrayList<Person>();
persons
.stream()
.forEach(new Consumer<Person>() {
@Override
public void accept(Person person) {
System.out.println(person.name);
}
});
Aggregate Operations 聚合操作
在 JDK 8 以后,推荐使用聚合操作对一个集合进行操作。聚合操作通常和 lambda 表达式结合使用,让代码看起来更简洁(因此可能更难理解)。下面举几个简单的栗子:
1.使用流来遍历一个 ShapesCollection,然后输出红色的元素:
myShapesCollection.stream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));
2.你还可以获取一个并发流(parallelStream),当集合元素很多时使用并发可以提高效率:
myShapesCollection.parallelStream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));
3.聚合操作还有很多操作集合的方法,比如说你想把 Collection 中的元素都转成 String 对象,然后把它们 连起来:
String joined = elements.stream()
.map(Object::toString)
.collect(Collectors.joining(", "));
看起来是不是非常简洁呢!
聚合操作还有很多功能,这里仅做介绍,想要了解更多可以查看Aggregate Operations 官方指引。
Iterator 迭代器
在Java 集合解析:Iterator 和 Java 集合解析:ListIterator 我介绍了 Collection 的迭代器 Iterator 以及用于 List 的迭代器 ListIterator。
结合 Collection 和 Iterator 可以实现一些复用性很强的方法,比如这样:
public static void filter(Collection<?> c) {
for (Iterator<?> it = c.iterator(); it.hasNext(); )
if (!condition(it.next()))
it.remove();
}
这个 filter 方法是多态的,可以用于所有 Collection 的子类、实现类。 这个例子说明了使用 Java 集合框架我们可以很随便写出 “优雅,可拓展,复用性强” 的代码~
总结
Collection 接口是类集框架的基础之一。
它创建所有类集都将拥有的 15 个核心方法。
因为几乎所有集合类集都实现了 Collection接口,所以熟悉它对于清楚地理解框架是必要的。
接下来将逐步了解集合框架的各个子接口及实现类。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南