`
chembo
  • 浏览: 938765 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java的类集详解 转载笔记

阅读更多
   在学习类集之前,先明确一个概念,那就是啥叫重量级,啥叫轻量级。在学习框架或容器时,常常会有人说这个容器是重量级的,这个容器是轻量级的,现在就对重量级和轻量级做一个解释。

      重量级还是轻量级主要看它应用了多少服务。使用服务越多,对系统资源的占用也越多,负载越大,必然会影响到应用发布时间和运行性能。对于一个容器而言,它提供了很多的服务,但默认对应用不是打开的,应用需要某种服务,必须指明使用该服务,则应用只涉及该容器的核心服务,则把这种非入侵式的容器称为轻量级容器。相反,应用在用该容器时,你必须使用该容器给你提供的所有功能,这种入侵式的容器称为重量级容器。

    1、 类集合的总体结构图

Java的类集详解 - hf.huangfeng - hf.huangfeng的博客

从总体图上我们可以看到,Collection包括List,set两个子接口。而List的子接口的实现有ArrayList、LinkedList和Vector。Set子接口的实现为hashset,它的子接口还包括SortedSet。

Map接口包括HashMap和HashTable两个实现和sortedMap一个子接口,SortedMap子接口的实现为TreeMap。

        下面就几个接口或实现的区别做详细的解释,而此区别也是学习集合的重点:

(1)list、set和Map的区别

        1、list中存储的元素对象是有序的,且允许重复。

        2、Set中存储的元素对象是无序的散列的且不允许重复,后一个相同元素会覆盖前一个相同元素的对象。

        3、Map是一个由key和value组成的键值对。

(2)ArrayList和LinkedList,ArrayList和Vector的区别

         ArrayList和LinkedList区别

        Linkedlist的底层实现是双向循环列表,所以对于增加删除操作具有很高的效力。适合用来实现Stack和Queue数据结构。

        ArrayList底层实现为数组,所以对于查找遍历具有很高的效力,在实际开发中应用较多。

        Arraylist和Vector区别和联系

        相同点:底层实现都是数组,可以通过下标访问。

        不同点:Vector是线性安全的,属于重量级容器。

                    ArrayList不是线性安全的,属于轻量级容器。

(3)HashMap和HashTable的区别

        HashMap是非线性安全的,轻量级容器,它允许空的键值对,它还可以存储null的键值对。

        HashTable是线性安全的,重量级容器,它不允许空的键值对,它不能存储null的键值对。

       解释:在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。而hashTable不可以。

Java代码 Java的类集详解 - hf.huangfeng - hf.huangfeng的博客

   1. Map map =new HashMap();  
   2.  map.put(null, "nihao ");     //允许  
   3.  map.put("key", null);         //允许  
   4.  map.put("null", "nnnnnn");//允许  
   5.  System.out.println(map.get(null));  
   6.  System.out.println(map.get("key"));  
   7.  System.out.println(map.get("null"));  
   8.  
   9.  
  10.  Map table =new Hashtable();  
  11.  table.put("null", "table");//允许  
  12.  table.put("key", null); //不允许  
  13.  table.put(null, "table");//不允许  
  14.  System.out.println(table.get("null"));  
  15.  System.out.println(table.get("key")); 

Map map =new HashMap(); map.put(null, "nihao "); //允许
map.put("key", null); //允许
map.put("null", "nnnnnn");//允许
System.out.println(map.get(null));
System.out.println(map.get("key"));
System.out.println(map.get("null"));
Map table =new Hashtable();
table.put("null", "table");//允许
table.put("key", null); //不允许
table.put(null, "table");//不允许
System.out.println(table.get("null"));
System.out.println(table.get("key"));

  (4)Hashset和HashMap

        Hashset是一个特殊的HsahMap,它是通过组合HashMap实现的,它把所有存放的对象作为KEY,而Value为null。所以set是特殊的Map。

(5)sortedset是有序的set,它的实现是treeset,而sortedMap是有序的Map,它的实现是treeMap。TreeSet是通过TreeMap实现的一个SortedSet的实现。TreeMap是通过红黑二叉树实现的。

      注意:集合在循环获取值时,都会遇到iterator,循环时建议优先考虑iterator
分享到:
评论

相关推荐

    Java集合排序及java集合类详解.pdf

    Java集合排序及java集合类详解.pdf

    黑马程序员_java8新特性详解笔记和源码

    Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。

    Java邮件开发详解

    Java邮件开发详解 Java邮件开发详解

    Java2编程详解.rar

    《Java2编程详解》这本书是Java开发者的重要参考资料,它涵盖了Java语言的核心概念和技术,旨在帮助读者深入理解并熟练掌握Java2平台的编程技术。在这个压缩包中,包含了一个名为"Java2编程详解.pdf"的PDF文件,这很...

    张孝祥Java邮件开发详解

    本教程“张孝祥Java邮件开发详解”深入探讨了如何使用Java来实现邮件的发送功能,涵盖了从基础概念到高级特性的全方位讲解。 首先,Java Mail API是Java中用于处理邮件的核心库,它提供了丰富的类和接口,使得...

    Java2编程详解(Special_Edition_Using_Java)

    《Java2编程详解》这本书是Java编程领域的一部经典之作,特别版的使用指南深入剖析了Java 2平台的核心技术和编程方法。这本书旨在帮助开发者掌握Java语言的基础以及高级特性,从而能够有效地进行软件开发。 首先,...

    张孝祥Java邮件开发详解110M

    张孝祥的"Java邮件开发详解"教程无疑是学习这一主题的宝贵资源。本教程可能包含了从邮件协议理解到实际JavaMail API使用的全方位讲解。 Java邮件开发主要涉及以下几个关键知识点: 1. **邮件协议**:首先,你需要...

    Java2编程详解

    《Java2编程详解》是一本全面深入探讨Java编程技术的书籍,主要针对Java 2平台进行讲解。在Java 2平台上,Java语言的功能得到了极大的扩展,包括多线程、网络编程、I/O流、数据库连接、图形用户界面(GUI)以及Java...

    java扫雷代码详解

    Java扫雷代码详解 本篇文章主要讲解了Java扫雷程序的代码实现,通过对扫雷程序的代码注释,帮助初学者更好地理解扫雷程序的工作原理。 Java扫雷程序的设计 Java扫雷程序的设计主要分为三个步骤:第一步,extends ...

    Java 2编程详解

    Java 2编程详解

    java2编程详解(special_edition_using_java)4.rar

    《Java2编程详解》是一本专门针对Java编程技术的深入解析书籍,Special Edition Using Java的第四版,旨在为读者提供全面、深入的Java学习资源。这本书涵盖了从基础语法到高级特性的广泛内容,适合初学者和有经验的...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...

    Java2编程详解4

    Java2编程详解第四部分

    JAVA SE应用详解.pdf

    Java语言具有面向对象、与平台无关、简单稳定、支持多线程等特点,已经成为当下最重要的网络编程语言之一。本书分为12个章节,主要包括Java语言概述 、基本语法规则、面向对象核心技术、数组和集合、异常处理、文件...

    java编程思想详解

    【Java编程思想详解】 Java编程思想是理解和使用Java语言的核心理念,它不仅仅是关于语言特性的简单堆砌,而是一种设计理念,强调的是设计、抽象和问题解决。Java的强大在于其面向对象的设计,它允许开发者以更加...

    JAVA高级软件工程师培训笔记

    3. **类的核心特性详解**: - **封装性**:封装是指隐藏对象的属性和实现细节,仅对外提供公共接口。这使得对象的内部状态不能被外部直接访问,从而提高了代码的安全性和稳定性。 - **继承性**:继承允许一个类...

    Java生产环境下性能监控与调优详解课程笔记(完整版)

    这份"Java生产环境下性能监控与调优详解课程笔记(完整版)"涵盖了多个重要的知识点,旨在帮助开发者和运维人员提升Java应用的性能。 一、Java性能监控工具 1. JVisualVM:集成在JDK中的一个多用途工具,可以进行...

    java,常用集合详解

    java, java常用集合类详解(有例子,经典呐!!!集合类糊涂的来看啊!!) 集合类详解

    java2编程详解

    Java已经成为了编程语言的骄子。我们可以看到,越来越多的大学在教授数据结构、程序设计和算法分析等课程时,选择以Java语言为载体。这本<Java编程思想>赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce ...

Global site tag (gtag.js) - Google Analytics