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 ...
随机推荐
- sql中null 和 ‘’(空字符串)
sql 中 null 和 空字符串的区别方式 在Silverlight中 数据库 需要与实体类进行映射, 假如实体类不允许为null,则 select '' as 列名 from 表名字: ...
- Windows 10 安装 到SSD硬盘
1.更换SSD硬盘 2.安装windows 10 系统(升级太慢,建议全新安装) 3.全程不到1个小时个月安装完成. 4.这个分数惨不忍睹,但是速度还是蛮快. 5.挂载机械硬盘,安装驱动,window ...
- promise两个参数的具体作用
Promise通常配合then方法来链式的使用,then方法里面第一个回调函数表示成功状态,也就是resolve通过.then调用,第二个是失败状态-reject通过.Cath调用,如果默认写一个参数 ...
- 在 React Native 中使用 Redux 架构
前言 Redux 架构是 Flux 架构的一个变形,相对于 Flux,Redux 的复杂性相对较低,而且最为巧妙的是 React 应用可以看成由一个根组件连接着许多大大小小的组件的应用,Redux 也 ...
- 求职之路共分享——亲身面试题(一) 1/三层与MVC区别
转自http://www.cnblogs.com/ndxsdhy/archive/2011/08/04/2127908.html 觉得这篇文章挺容易理解的, http://www.cnblogs.co ...
- Spring Boot 热部署的实现 - 原创
实现方式有两大种(其中包含3种): 一.基于springloaded 1.1)Maven启动方式 第一步:在pom.xml中的“plugin节点”里面添加如下依赖: <dependencies& ...
- Hibernate -- 对象关系映射基础
- TF卡.之前的(20180923)
1.京东上搜到的(购买记录) ZC:64G的应该是 只买了一个 另一个取消了 2.TB上搜到的 购买记录是这样的(注意 也有 取消的) 3. 4. 5.
- scala学习手记16 – scala中的static
前面两节学了scala的对象和伴生对象,这两个在使用的时候很有些java的静态成员的意思. scala中没有静态字段和静态方法.静态成员会破坏scala所支持的完整的面向对象模型.不过可以通过伴生对象 ...
- Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals)
Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A.String Reconstruction B. High Load C ...