`
chembo
  • 浏览: 940949 次
  • 性别: 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开发详解.zip

    031301_【第13章:Java类集】_认识类集、Collection接口笔记.pdf 031302_【第13章:Java类集】_List接口笔记.pdf 031303_【第13章:Java类集】_LinkedList类笔记.pdf 031304_【第13章:Java类集】_Set接口笔记.pdf ...

    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的跨平台特性和丰富的图形用户界面(GUI)组件,Java扫雷成为了许多初学者...

    java 设计模式详解

    Java设计模式详解涵盖了在Java编程中广泛使用的一些经典设计模式。这些模式不仅有助于提高代码的可读性、可维护性和可扩展性,还能促进团队之间的沟通与协作。下面,我们将深入探讨几个重要的Java设计模式。 1. ...

    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 Bug模式详解 pdf版

    《Java Bug模式详解》这本书是面向那些已经具备Java编程基础的开发者,旨在帮助他们更好地理解和解决在编程过程中遇到的各种错误和异常,提升代码质量和维护效率。书中深入剖析了Java编程中常见的bug模式,通过实例...

    Java数据库技术详解

    首先,Java入门电子书中可能涵盖了基础的Java编程概念,如变量、数据类型、控制结构、类与对象、异常处理等。这些基础知识对于理解和应用Java数据库技术至关重要。在掌握这些基本概念后,开发者可以进一步学习如何...

    JAVA SE应用详解.pdf

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

Global site tag (gtag.js) - Google Analytics