一.概述

  Collection是集合框架的根接口.不同的集合具有不同的特性,比如有的集合可以有重复元素,有的不可以,有的可以排序,有的不可排序,如此等等,而Collection作为集合的根接口,它规范定义了集合的通用方法,一个集合我们可以看作一个在内存中的小型数据库,而数据库的常用操作无外乎"增删改查",Collection中的方法也大体是这些类型操作.

  此外Colletion的所有通用实现类都会有一个转换器构造方法,它接收一个Collection类型参数,这样可以以另一个Collection类型集合中元素来初始化自己,也相当于实现了集合类型的相互转换.

二.主要方法

修饰符和返回值 方法名 描述
添加功能
boolean add(E) 向集合添加一个元素,集合元素数没有变化的话返回false
boolean addAll(Collection<? extends E>) 向集合添加另一个集合全部元素,集合元素数没有变化的话返回false
删除功能
boolean remove(Object)  从集合移除一个元素,集合元素数没有变化的话返回false
boolean removeAll(Colletion<?>)  从集合移除另一个集合中所有元素,集合元素数没有变化的话返回false
defalut boolean removeIf(Predicate<? super E>)  按条件从集合中移除相应元素,集合元素没变化的话返回false
void clear()  清空集合内元素
boolean retainAll(Collection<?> ) 保留交集元素,移除不在交集中的元素,集合元素数没有变化的话返回false
判读功能
boolean contains(Object) 判读对象是否在集合内
boolean containsAll(Collection<?>) 判断参数集合内元素是否都在集合内
boolean equals(Object) 判断集合是否与传入对象"相等"
boolean isEmpty() 判断集元素是否为空 
获取功能
int size() 获取集合内实际元素数
Object[] toArray() 返回包含集合所有元素的数组
T[] toArray(T[])

返回包含集合所有元素的数组,如果集合元素数大于传入数组长度,

返回为新建数组,否则返回为传入数组,传入数组若果有剩余,多余填

充为null值,如果数组类型与集合元素类型不符,抛出ArrayStoreException

int hashCode() 返回对象哈希值
迭代器
Iterator iterator() 返回集合迭代器
defalut SplIteraror splIterator() 返回集合可分割迭代器
其他
defalut Stream<E> stream() 返回对象流
defalut Stream<E> parallelStream() 返回对象并行流 

  Colletion接口中定义的方法是集合操作中最通用的操作方法,按照对元素不同的操作类型大致可以分为添加,删除,判断,获取这四种,集合为了实现元素的遍历还要提供一个获取迭代器的方法,此外在java 8之后为了应对现在分布式并行操作需求,提供了一个可分割迭代器spliterator(),为了方便开发者对集合元素快速遍历和处理,java 8新提出的聚合操作概念,可以通过stream()和parallelStream()方法来实现聚合操作.

三.集合遍历

  对于集合的遍历,我们知道Collection继承了Iterable接口.所以可以使用迭代器和for-loop以及forEach()形式进行遍历. 在Java 8之后,我们可以获取集合的流(stream),然后进行聚合操作(Aggregate Operations)遍历,而聚合操作通常与lambda表达式相结合,使得代码更简洁有力.

  1. package com.java.collection;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.function.Consumer;
  6. import java.util.function.Predicate;
  7.  
  8. public class TraverseTest {
  9. public static void main(String[] args) {
  10. Collection<String> c = new ArrayList();
  11.  
  12. c.add("aad");
  13. c.add("bde");
  14. c.add("cdf");
  15. c.add("dad");
  16.  
  17. //使用聚合操作
  18. c.stream().filter(new Predicate<String>() {
  19. @Override
  20. public boolean test(String s) {
  21. return s.contains("a");
  22. }
  23. }).forEach(new Consumer<String>() {
  24. @Override
  25. public void accept(String s) {
  26. System.out.println(s);
  27. }
  28. });
  29. System.out.println("-------------------------------------------");
  30. //与lambda表达式结合
  31. c.stream().filter(s -> s.contains("b"))
  32. .forEach(s -> System.out.println(s));
  33. }
  34. }

控制台输出为

  1. aad
  2. dad
  3. -------------------------------------------
  4. bde

四.子接口

  Set是一种无序而元素唯一的集合类型,它是比如扑克中的卡牌,学生课程表安排的课程,计算机中运行的进程这些事物的数学概念的抽象表示.Set接口相比Colletion并没有更多的操作方法,而他的子接口SortedSet和NavigableSet进行了更多的拓展,可以看出子接口中方法侧重对元素的比较和排序

  List是一种有序且元素可重复的集合类型,它像数组一样可以通过索引来快速查找操作元素.

  Queue是一种队列结构,它更适合用来存储数据而不是处理数据.Queue常用来做先见先出的(FIFO)的存储结构,新加入的元素会被存储在集合尾部,取出元素则会从头部取出.Deque是一种双向队列,既可以做先进先出(FIFO)也可以做先进后出(LIFO)。

java 集合框架(三)Collection的更多相关文章

  1. Java集合框架之Collection接口

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...

  2. Java集合框架(Collection Framework)学习之 Collection与Map概貌

    写过Java的人都知道Java集合类,也用过Java集合类.Java集合类位于 java.util 这个包下,就像它的包名暗示的那样,Java集合类就是一套工具.它就像工匠的工具箱一样,它能给使用它的 ...

  3. Java 集合框架之Collection

    此图是 java 中 Collection 相关的接口与类的关系的类图.其中,类只是集合框架的一部分,比较常用的一部分. 第一次画类图,着实很费劲,不过收获也不小. 下面是相关接口和类的解释说明.文字 ...

  4. Java集合框架(三)

     Map Map集合:该集合存储键值对,一对一对的往里存,而且要保证键的唯一性. Map |------HashTable:底层是哈希表数据结构,不可以存入null键null值.该集合是线程同步的.J ...

  5. java集合框架02——Collection架构与源码分析

    Collection是一个接口,它主要的两个分支是List和Set.如下图所示: List和Set都是接口,它们继承与Collection.List是有序的队列,可以用重复的元素:而Set是数学概念中 ...

  6. Java集合框架(Collection Framework)学习之 HashMap

    从API文档可以得到HashMap的以下几个特点: 基于哈希表(hash table)实现,并且是链式哈希表 允许空值和空键(null=null 键值对) HashMap与Hashtable基本相同, ...

  7. java集合框架之Collection

    参考http://how2j.cn/k/collection/collection-collection/366.html Collection是 Set List Queue和 Deque的接口Qu ...

  8. Java学习--java中的集合框架、Collection接口、list接口

    与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...

  9. [转]Java - 集合框架完全解析

    数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...

随机推荐

  1. linux(ubuntu或Deepin等)+win7双系统升级win10出现grub解决办法

    1,set root=(hd0,msdos11) 2,set prefix=(hd0,msdos11)/boot/grub 3,insmod /boot/grub/i386-pc/normal.mod ...

  2. Linux服务器删除乱码文件和文件夹的方法

    Linux服务器删除乱码文件和文件夹的方法 首页进入乱码文件所在文件夹由于php大势所趋,所以接触Linux服务器的机会越来越多.不同于Windows服务器,Linux服务器只支持数字.英文等字符,对 ...

  3. Nginx+Geoserver部署所遇问题总结

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 该问题的最终解决离不开公司大拿whs先生的指点,先表示感谢. ...

  4. JVM的内存分区

    JVM的内存分区 这篇文章尝试讨论清楚JVM的内存分区情况. 1.       JVM的内存和系统内存的关系 下图是对系统内存及JVM内存的大致描绘 对大多数操作系统,内存可以分为物理内存RAM及Sw ...

  5. 关键字voltale

    ***volatile在多线程用的最多.*** #include<stdio.h> #include<stdlib.h> int main() { ; i < ; i++ ...

  6. C# Sap Rfc 连接代码实例

    根据不同的需求,安装不同位数的 Rfc SDK 1.构造 Sap Adress Information,且继承 IDestinationConfiguration public class SapAd ...

  7. 网易云免费OSS服务用做Markdown图床或博客图片外链

    我使用据说是Windows下最好用的Markdown编辑器“MarkdownPad2”(个人感觉还是Visual Code+Markdown插件666)写Markdown,在贴图方面遇到一个问题,于是 ...

  8. HTML图片上下之间的空隙是什么原因

    在这个问题上,<权威指南>该书第三版第 146 页有明确说到: 如果一个垂直元素没有基线——也就是说,这是一个图像或表单输入元素,或者其它替换元素——那么该元素低端与其父元素的基线对齐.这 ...

  9. linux命令dd

    原文链接: http://blog.csdn.net/adaptiver/article/details/6672592 dd 使用dd这个linux命令可以创建一定大小文件. linux创建文件命令 ...

  10. Eclipse远程调试应用程序

    第一步,在应用程序的配置文件run.xml中加入下面的配置项,启动应用程序: <target name="run" depends="checkBuilderFai ...