`

java集合框架思考学习一

 
阅读更多

 

java集合框架是什么?

  java集合框架是对数据结构和算法用法的实现的封装,包括map、set、list、tree、array、hastabel等其他的集合类型.
在C++中类似的是标准模板库.
根据维基百科了解到,JCF框架是从1.2版本才出现的,主要是java大牛Joshua_Bloch设计开发,这个人也就是Google首席工程软件师,同时也是《 Effective Java》的作者.
java集合框架解决了什么问题?
  我们在程序设计中,需要处理的数据分为基本数据和复合数据,后者常见的组织形式就是类。类对象通常是以动态形式分配的。
譬如在内存空间分配new一个对象。我们在处理的时候,面对的不是单个基本对象或者单个基本类,而是多个数据类型,那么用什么来处理多个对象呢?就是数组。数组也是一种实现集合的数据结构,可以存放多个数据。
数组的优点是通过下标检索元素非常方便,但是缺点也是显而易见:空间固定而且不能够稳定增长。所以不是解决一切集合问题的工具。我们可能需要一些新的数据结构的工具来处理集合,其实数组本身就是一种线下有序的数据结构。
  数据结构的基础就是集合论.为什么这么说呢?上面说过,现在我们要研究的不是单个的基 本类型或对象,多个对象的整体不就是集合吗?从OO的角度上看,集合也是一种对象,但它是一种特殊的对象:对象的容器(注意,我们这里没有继续讨论基本类 型的集合,因为基本类型和存储分配方式与对象有着本质的差别)。集合论的一个根本问题就是:给定一个元素,集合必须能够回答该元素是或者不是属于这个集 合。还有一个问题也很重要,就是:如果元素是属于一个集合,那该元素在集合中的地位应该是唯一的,或者说它是唯一确定的。当然还有其它问题,譬如查找、遍历、排序等等,这和具体的集合类型相关,后面将会讲到。
 
JCF框架的结构介绍和一些基本概念
一:结构
下面这张图是常见的JCF框架的结构图
 
上面图看起来非常的多,比较乱,其实很多的软件的一个模块的设计都比这复杂。
上面黑色背景的表示是接口,我们可以看到
java提供了以下接口
第一级:Collection、
二级:  List接口、Set接口、Map接口
三级:  RandomAcess、SortedSet、SortedMap
 如果我们学过数学或者没有忘记的话,应该知道,List、Set、Map其实是对数学集合概念的抽象和封装。
 我们把Collection接口置于最顶上,意思是想说:Collection其实是整个JCF家族中的“祖宗”,几乎所有的JCF成员都源自该接口,或者和它有密切的关系,看过Collection接口的文档或者源码就可以知道,Collection提供关于集合的一些通用操作的接口,包括插入(add()方法)、删除(remove()方法)、判断一个元素是不是其成员(contains()方法)、遍历(iterator()方法)等等。注意了,前面的“废话”在这里将得到体现:Set接口体现的是“无序集”的概念,它是不允许有重复元素出现的;
   List接口代表“有序集”;而Map接口则是“映射” ,其实Map.Entry接口就是代表一个“元素对”我们可以通过Map的entrySet() 方法得到这样一个由“元素对”组成的Set对象。我们注意到Set和List都是从“祖宗”Collection派生的,而Map不是,毕竟对一对元素的 操作与对单个元素的操作还是有区别的,但是如果你仔细对照一下Collection和Map的源代码,以及它们的直接后代AbstractCollectionAbstractMap的源代码,你将会发现很多相似的地方,所以我们仍然可以把Map看成是和Collection有着血缘关系的接口,而和Set,List一起处于并列的位置。
    有了“无序集”,“有序集”和“映射”,我们就可以定义各种各样的抽象数据结构了,譬如常见的向量,链表,堆栈,哈希表,平衡二叉树等。
从上我们了解到了,java集合框架的本质是对数据结构的抽象,
 
具体内容的掌握
你了解就jcf的层次和一些基本概念后呢,重要的是使用JCF 框架,所以需要了解对象的具体操作,比如List如何操作、Set如何操作
Map如何操作,集合里面包含的算法等等
具体的内容的掌握
 
1:主要用在哪些方面呢?
1:需要了解集合有哪些元素?遍历元素
2:如何根据条件找到元素?:查找元素
一:Collection:接口
Collection提供了实现了Iterable接口,实现了这个接口表示支持迭代功能。
Collection接口支持添加元素、删除元素、遍历查找元素和是否包含子集方法、并且支持迭代器和转成数组功能。
根据源代码可以看到提供了如下的方法:
size();
isEmpty();
contains();
iterator();
toArray();
add();
remove();
containsAll();
addAll();
removeAll(Collection<?> c);;
retainAll();
clear
并且提高了一个AbstractCollection抽象类,这个抽象类实现了Collection接口,实现了除了Iterator()和size() 外的所有的方法,当然我们也可以找自由的自己去实现这个接口
二:Set接口
1:Set接口实现了Collectio接口,但是不支持重复的元素的,Set的方法和Collection接口方法一样,并没有提供新的功能,这点从源码上可以看的出来。
2:和AbstractCollection一样,java提供了 AbstractSet抽象类,实现了equals()、hashCode ()和removeAll()方法
如何判断集合的对象相等?
 
3:java提供了2个通用的Set接口的实现:HashSet和TreeSet,通常我们使用这两个类来存储不重复元素。
2.1 HashSet
1: private transient HashMap<E,Object> map 来存储对象
  public HashSet(int initialCapacity, float loadFactor) {
        map = new HashMap<>(initialCapacity, loadFactor);
    }
看这段代码,创建一个hashset对象的时候,自动分配了一个HashMap对象,

引用资料:

http://www.newsmth.net/pc/pccon.php?id=3559&nid=105600&order=&tid=7082
http://www.janeve.me/articles/which-java-collection-to-use    
 
http://www.developer.com/java/other/article.php/767451/Data-Structures-in-Java-Part-2-What-Is-a-Collection.htm

 

分享到:
评论

相关推荐

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    JAVA集合框架学习思考+总结

    JAVA集合框架,java框架总结,java集合框架,java集合框架学习,java集合框架类

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业相关java 广州传智播客JavaEE工程师测试题.doc 广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有...

    java 编程入门思考

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java入门学习笔记

    "Java入门第二季学习笔记"可能深入到更复杂的主题,如异常处理、集合框架、IO流和线程。异常处理是Java中处理错误的重要机制,使得程序更加健壮。集合框架包括ArrayList、LinkedList、HashSet、HashMap等数据结构,...

    java 各种学习资料

    Java集合框架是处理数据结构和集合的工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)。熟练掌握这些集合类及其操作方法能显著提升代码效率。 并发编程在多核...

    Java程序设计教程,电子教案,实例源程序,思考练习参考答案

    5. **集合框架**:Java集合框架是存储和管理对象的重要工具,包括List、Set、Map接口及其实现类如ArrayList、LinkedList、HashSet、HashMap等。 6. **IO流**:Java的输入输出流系统允许程序读写文件、网络数据。...

    java学习帮助文档

    4. **集合框架**:Java集合框架包括ArrayList, LinkedList, HashMap等数据结构,用于存储和操作一组对象。理解它们的特性和适用场景能提高代码效率。 5. **输入/输出(I/O)**:Java的I/O流系统允许程序读取和写入...

    Java程序设计 3 数组与集合 简图.ppt

    实现集合可以通过实现Collection接口来完成,Collection接口是Java集合框架中的一个接口,Collection接口的实现类有ArrayList、LinkedList等。Collection接口的常用方法有add、remove、contains等。 小结 本节课...

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业相关java 广州传智播客JavaEE工程师测试题.doc 广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    大公司最喜欢问的Java集合类面试题.docx 大公司的Java面试题集.doc 就业相关java 广州传智播客JavaEE工程师测试题.doc 广州传智播客JavaEE工程师测试题(带答案的).doc 应聘时最漂亮的回答.docx 当面试官问「你有...

    java思考

    如果这是一个文本文件,那么它可能包含了博主对于Java语言的深入见解,包括但不限于类和对象、封装、继承、多态等面向对象特性,也可能是关于异常处理、集合框架、IO流、线程并发、反射、泛型、注解等方面的讨论。...

    java面试笔试资料Java经典项目集锦java笔试题大集合及答案题库java笔试题汇总资料个合集(188).zip

    Java框架研发思考.docx Java程序员们最常犯的10个错误.docx java程序员的就业指导(重点).docx Java程序员面试宝典 .pdf java笔试题大集合及答案 Java经典项目集锦.rar JAVA编程题全集(100题及答案).doc Java面试文档...

    使用建议 资源类型:Java面经文档、技术要点或面试编程题 难度:中等 覆盖范围:Java基础知识、面向对象、集合框架、

    3. **集合框架**:Java集合框架提供了多种数据结构,如List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、TreeMap)。理解它们之间的区别、特性和应用场景,以及如何高效地操作这些数据结构。...

    学习资料java开发

    你可以从基础语法开始,然后逐渐过渡到高级主题,如异常处理、多线程、集合框架、IO流、网络编程等。同时,学习使用集成开发环境(IDE),如Eclipse或IntelliJ IDEA,它们能提高开发效率。此外,了解和掌握JUnit等...

    java面试笔试题库java笔试题大集合及答案互联网公司面试资料Java面试问题集大全合集(200个).zip

    Java框架研发思考.docx Java程序员们最常犯的10个错误.docx java程序员的就业指导(重点).docx Java程序员面试宝典 .pdf java笔试题大集合及答案 Java经典项目集锦.rar JAVA编程题全集(100题及答案).doc java面试书籍...

    一个Java框架引发的思考:语言、框架、范式转换和软件生产力

    标题中的“一个Java框架引发的思考:语言、框架、范式转换和软件生产力”提示了本文将探讨一个特定的Java框架,并由此引申出关于编程语言、开发框架、编程范式以及它们如何影响软件开发效率的主题。从描述中提供的...

    java基础巩固,思考 java-se java基础巩固,思考,从底层到精通 测试一个

    5. **集合框架**:掌握ArrayList、LinkedList、HashSet、HashMap等集合类的使用,理解它们之间的区别以及何时选择哪种类型的集合。 6. **IO流**:学习输入/输出流(IO流)的概念,包括文件操作、对象序列化和网络...

    java笔记图解10

    2. **集合框架**:Java集合框架是处理对象组的关键工具,包括接口(如List、Set、Queue)和实现(如ArrayList、HashSet、LinkedList等)。这些接口和实现提供了丰富的操作,如添加、删除、查找元素等。Java集合框架...

    java面向对象编程课后思考题答案

    9. **集合框架**:Java集合框架包括List、Set和Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,提供了数据存储和操作的通用解决方案。 10. **泛型**:泛型允许在类、接口和方法中指定参数类型...

Global site tag (gtag.js) - Google Analytics