前段时间一直在忙一个物联网的项目,所以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>这两个接口,后面的博文将会详细分析;另外两个接口用的相对较少,一般要实现这两个接口的功能时都是开发者自己重新实现,在此不作详细分析。

说明:部分内容来自网络!后面将会对常用的接口和类作详细分析,希望跟各位网友共同进步,不对的地方欢迎大家指正!

测试代码如下:

  1. public class CollectionTest
  2. {
  3. public static void main(String[] args)
  4. {
  5. Collection<String> c = new ArrayList<String>();
  6. Collection<String> d = new ArrayList<String>();
  7. c.add("1");
  8. c.add("2");
  9. c.add("1");
  10. c.add("3");
  11. c.add("1");
  12. c.add("3");
  13. c.add("3");
  14. c.add("2");
  15. c.add("3");
  16. //      c.remove("3");
  17. d.add("2");
  18. d.add("1");
  19. d.add("4");
  20. System.out.println(c.equals(d));
  21. System.out.println(c);
  22. System.out.println(d);
  23. System.out.println(c.hashCode());
  24. System.out.println(d.hashCode());
  25. //      System.out.println(c.removeAll(d));
  26. System.out.println(c);
  27. System.out.println("----------------------");
  28. Object[] o = c.toArray();
  29. String s = null;
  30. for(int i = 0; i < o.length; i++)
  31. {
  32. s = (String)o[i];
  33. System.out.println(s);
  34. }
  35. }
  36. }

Java集合总结之Collection整体框架的更多相关文章

  1. Java 集合系列 02 Collection架构

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  2. Java 集合系列01之 总体框架

      Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set ...

  3. 【转】Java 集合系列01之 总体框架

    Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合 ...

  4. Java——集合系列(1)框架概述

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 集合框架概述 Jav ...

  5. Java集合----概述、Collection接口、Iterator接口

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...

  6. Java集合源码 -- Collection框架概述

    1.概述 collection框架是用于处理各种数据结构的,要根据各种数据结构的特点理解它 它能够保存对象,并提供很多的操作去管理对象,当你面临下面的情况时,也许你应该考虑用集合类 1.容器的长度是不 ...

  7. java集合之二(collection架构)

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308513.html 首先,我们对Collection进行说明.下面先看看Collection的一些框架 ...

  8. JAVA集合详解(Collection和Map接口)

    原文地址http://blog.csdn.net/lioncode/article/details/8673391 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父 ...

  9. Java 集合系列 01 总体框架

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

随机推荐

  1. 通过自动回复机器人学Mybatis:原始版本(包括JDBC、pom.xml等)

    imooc视频学习笔记 ----> URL:http://www.imooc.com/learn/154 list.jsp <%@ page contentType="text/ ...

  2. [CTSC2008]祭祀

    题目描述 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河 ...

  3. MyBatis源码解读之延迟加载

    1. 目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关.当 ...

  4. session/token/cookie/socket区别

    Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象 ...

  5. Effective C++ 条款05:了解C++编写并调用哪些函数

    规则一 编译器默认操作 // 你认为 class Empty { }; // 实际上 class Empty { public: Empty() { ... } // default 构造函数 Emp ...

  6. 工作队列work queues 公平分发(fair dispatch) And 消息应答与消息持久化

    生产者 package cn.wh.work; import cn.wh.util.RabbitMqConnectionUtil; import com.rabbitmq.client.Channel ...

  7. C#限制float有两位小数

    string str = (float.Parse(recode)).ToString("f2");//recode是string类型

  8. 基于mysql的全文索引

    支持引擎:mysql的MyISAM存储引擎和Innodb存储引擎(5.6及其以上)支持. 适用类型:char.varchar和text. 新建方法:ALTER TABLE article  ADD F ...

  9. 服务器(Ubuntu 12.04 LTS)上编译基于OpenCV的项目遇到的问题及解决方案

    问题1:OpenCV编译安装时出错,错误信息中提到要打开-fPIC 选项重试. 解决方案:使用如下命令运行CMake cmake -DWITH_1394=OFF -DWITH_CUDA=OFF -DW ...

  10. 剑指offer--24.树的子结构

    时间限制:1秒 空间限制:32768K 热度指数:407165 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构)   class Solution ...