Java集合总结之Collection整体框架
前段时间一直在忙一个物联网的项目,所以Java的学习一直搁置,从今天开始继续学习!望大家多提宝贵意见!
java.util包中包含了一些在Java 2中新增加的最令人兴奋的增强功能:类集。一个类集(collection)是一组对象。类集的增加使得许多java.util中的成员在结构和体系结构上发生根本的改变。它也扩展了包可以被应用的任务范围。Java的类集(Collection)框架使你的程序处理对象组的方法标准化。在Java 2出现之前,Java提供了一些专门的类如Dictionary,Vector,Stack和Properties去存储和操作对象组。尽管这些类非常有用,它们却缺少一个集中,统一的主题。因此例如说使用Vector的方法就会与使用Properties的方法不同。以前的专门的方法也没有被设计成易于扩展和能适应新的环境的形式。而类集解决了这些(以及其他的一些)问题
Java类集框架的优势:
1) 这种框架是高性能的。对基本类集(动态数组,链接表,树和散列表)的实现是高效率的。一般很少需要人工去对这些“数据引擎”编写代码(如果有的话)。
2) 框架允许不同类型的类集以相同的方式和高度互操作方式工作。
3) 类集是容易扩展和/或修改的。为了实现这一目标,类集框架被设计成包含一组标准的接口。对这些接口,提供了几个标准的实现工具(例如LinkedList,HashSet和TreeSet),通常就是这样使用的。如果你愿意的话,也可以实现你自己的类集。为了方便起见,创建用于各种特殊目的的实现工具。一部分工具可以使你自己的类集实现更加容易。
4) 增加了允许将标准数组融合到类集框架中的机制。
类集的整体框架如下:

Collection接口是构造类集框架的基础。它声明所有类集都将拥有的核心方法。因为所有类集实现Collection,所以熟悉它的方法对于清楚地理解框架是必要的。
boolean add(E
e):向集合中增加元素,如果该类型集合允许有重复元素(如:ArrayList、LinkedList等)或者不允许有重复元素但新添加的元素不在集合中则返回true,如果该类型集合不允许有重复元素并且新添加的元素已经在集合中则返回false。
boolean addAll(Collection<?
extendsE> c):将一个类集c中的所有元素添加到另一个类集(本类集)。
void clear():清除本类集中所有元素,调用完该方法后本类集将为空。
boolean contains(Object o):如果本类集包含元素e,并且满足(o==null ?e==null
: o.equals(e))则返回true,否则返回false。
boolean containsAll(Collection<?>
c):如果本类集包含指定类集c中的所有元素则返回true,否则返回false。
boolean equals(Object
o):如果本类集的equals方法是我们自己重写的,则具体两个类集怎样才算equal(是引用相等还是值相等且顺序相同),我们自己决定。如果类集的equals方法不是我们重写的,则当两个类集类型为List(包括ArrayList和LinkedList,元素可以重复)时,必须两个类集的元素个数相等,元素顺序相同,且相同位置的元素对应相等才返回true,否则返回false;当两个类集类型为Set(包括HashSet和TreeSet,元素不能重复)时,只须两个类集的元素个数相等,并且一个类集中的任一个元素在另一个类集中都能找到相同的元素(不必顺序相同,因为Set是无序的),则返回true,否则返回false。
int hashCode():返回本类集的hash code值,具体算法依赖于类集中元素的值和类型,在后面的讨论中会讲到。
boolean isEmpty():若本类集没有元素则返回true,否则返回false。
Iterator<E> iterator():返回本类集中所有元素的迭代函数,至于从该函数中取出的元素的顺序依赖于本类集的类型,若为List则按List的顺序取出,若为Set则无序。
booleanremove(Object
o):若本类集中有值与o的值相等的元素,则删除该元素,并返回true,若没有则返回false。当类集类型为List时,有可能有多个元素与o的值相等,此时,只会删除第一个值为o的元素,其他元素位置不变。
boolean removeAll(Collection<?>c):删除本类集中与指定类集c中的元素相等的所有元素,不管有多少个元素,只要在c中出现了,调用后d中就不会出现。若调用后本类集的元素有改变(即有元素被删除),则返回true,否则返回false。
boolean retainAll(Collection<?>c):保持本类集中在指定类集中出现过的所有元素,即删除本类集中不包含在指定类集c中的所有元素。若调用后本类集的元素有改变(即有元素被删除),则返回true,否则返回false。
int size():返回本类集中元素的个数,但大小不能超过0x7fffffff,若超过则返回0x7fffffff。
Object[] toArray():返回一个包含了本类集中所有元素的数组,数组类型为:Object[],因为底层是通过iterator()方法来传值的,所以数组中元素的顺序同样依赖于本类集的类型,若为List则按List的顺序放入数组,若为Set则无序。
<T>T[] toArray(T[] a):以泛型的形式来传递返回数组的类型,其他与Object[]toArray()方法类似。
直接继承Collection接口的有List<E>、Queue<E>、BeanContext和Set<E>四个接口,其中我们用的最多的是List<E>和Set<E>这两个接口,后面的博文将会详细分析;另外两个接口用的相对较少,一般要实现这两个接口的功能时都是开发者自己重新实现,在此不作详细分析。
说明:部分内容来自网络!后面将会对常用的接口和类作详细分析,希望跟各位网友共同进步,不对的地方欢迎大家指正!
测试代码如下:
- public class CollectionTest
- {
- public static void main(String[] args)
- {
- Collection<String> c = new ArrayList<String>();
- Collection<String> d = new ArrayList<String>();
- c.add("1");
- c.add("2");
- c.add("1");
- c.add("3");
- c.add("1");
- c.add("3");
- c.add("3");
- c.add("2");
- c.add("3");
- // c.remove("3");
- d.add("2");
- d.add("1");
- d.add("4");
- System.out.println(c.equals(d));
- System.out.println(c);
- System.out.println(d);
- System.out.println(c.hashCode());
- System.out.println(d.hashCode());
- // System.out.println(c.removeAll(d));
- System.out.println(c);
- System.out.println("----------------------");
- Object[] o = c.toArray();
- String s = null;
- for(int i = 0; i < o.length; i++)
- {
- s = (String)o[i];
- System.out.println(s);
- }
- }
- }
Java集合总结之Collection整体框架的更多相关文章
- Java 集合系列 02 Collection架构
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列01之 总体框架
Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set ...
- 【转】Java 集合系列01之 总体框架
Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合 ...
- Java——集合系列(1)框架概述
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 集合框架概述 Jav ...
- Java集合----概述、Collection接口、Iterator接口
Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...
- Java集合源码 -- Collection框架概述
1.概述 collection框架是用于处理各种数据结构的,要根据各种数据结构的特点理解它 它能够保存对象,并提供很多的操作去管理对象,当你面临下面的情况时,也许你应该考虑用集合类 1.容器的长度是不 ...
- java集合之二(collection架构)
转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308513.html 首先,我们对Collection进行说明.下面先看看Collection的一些框架 ...
- JAVA集合详解(Collection和Map接口)
原文地址http://blog.csdn.net/lioncode/article/details/8673391 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父 ...
- Java 集合系列 01 总体框架
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
随机推荐
- knudson hypothesis 二次突变假说
二次突变假说是由诺丁在1953年提出的,他发现似乎随着年龄的增长,患有癌症的概率有上升.对这种现象有一种解释,即癌症的发生需要多个突变的累积. 克努森在1971通过研究正式地提出该观点.他对具有遗传性 ...
- Oracle数据库的删除
在Windows中彻底删除原先的Oracle,然后再重新安装Oracle数据库.具体步骤如下: 1. 开始->设置->控制面板->管理工具->服务,停止所有Oracle服务 ...
- COS-6主存管理
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口.操作系统的功能包括管理计算机系统的硬件.软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限 ...
- Spring注解(AOP)
底层动态代理 程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 导入aop的相关模块 <!-- https://mvnrepository.com/artifact/org. ...
- Asp.net Core, 基于 claims 实现权限验证 - 引导篇
什么是Claims? 这个直接阅读其他大神些的文章吧,解释得更好. 相关文章阅读: http://www.cnblogs.com/JustRun1983/p/4708176.html http://w ...
- 谈谈RMQ问题
没用的话:好像好久没更博了,无聊就讲讲算法吧(主要找不到水题). 感觉针对初学者,老师教这个算法时没怎么懂,最近(大概1.2个月前吧)老师又教了lca(最近公共祖先,额,可以百度,我就不讲了,可能以后 ...
- PermutationsUnique,求全排列,去重
问题描述:给定一个数组,数组里面有重复元素,求全排列. 算法分析:和上一道题一样,只不过要去重. import java.util.ArrayList; import java.util.HashSe ...
- Memcached 连接
我们可以通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务. 语法 telnet HOST PORT 命令中的 HOST 和 PORT 为运行 Memcached 服务的 I ...
- ceph存储 ceph Bluestore的架构
ceph 目前是开源社区比较流行的分布式块存储系统,其以良好的架构,稳定性和完善的数据服务功能,获得的了广泛的部署和应用. 目前ceph 最大的问题是其性能相对较差,特别是无法发挥SSD等高速设备的硬 ...
- angular ng-repeat 如何实现嵌套
slides是一个二维数组 <div ng-repeat="links in slides"> <div ng-repeat="link in link ...