- 浏览: 940949 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (306)
- spring (20)
- ext (15)
- 其它综合 (8)
- svn (6)
- struts (1)
- java综合 (27)
- javascript (19)
- jquery (9)
- linux (56)
- tomcat (10)
- 数据库 (37)
- hibernate (9)
- seo (2)
- web前端 (3)
- 生活 (3)
- 软硬件 (11)
- python (5)
- apache (10)
- spring security (3)
- 好书分享 (4)
- ant (2)
- hudson (1)
- php (2)
- android (3)
- nginx (6)
- memcached (2)
- Tapestry (1)
- nodejs (2)
- cygwin (4)
- jboss (8)
- windows server (2)
- poi (1)
- css (5)
- weblogic (2)
- activemq (0)
- centos (4)
- sybase (1)
- lucene (2)
- daemontools (1)
- rabbitmq (2)
- zookeeper (1)
- nagios (1)
- jetty (4)
- ivy (1)
- maven (3)
- mysql (2)
- java设计 (1)
- redis (2)
- 二维码 (1)
- github (1)
最新评论
-
837030601:
很棒,虽然看不懂,楼主能给小白解释下不,解决问题了
mvn jetty:run 启动很慢解决办法 -
jevmok:
第二种方式错误无法添加;
jetty8 添加静态文件目录 -
JavaAiHaoZhezh:
...
spring在filter中注入bean -
zhanglongbin:
感谢楼主分享!!我遇到的问题:本地word转html 两个编码 ...
poi完美word转html(表格、图片、样式) -
wjs876046992:
文档编号显示不对,读出来全是1和1.1,我的文档是1,1.1, ...
poi完美word转html(表格、图片、样式)
在学习类集之前,先明确一个概念,那就是啥叫重量级,啥叫轻量级。在学习框架或容器时,常常会有人说这个容器是重量级的,这个容器是轻量级的,现在就对重量级和轻量级做一个解释。
重量级还是轻量级主要看它应用了多少服务。使用服务越多,对系统资源的占用也越多,负载越大,必然会影响到应用发布时间和运行性能。对于一个容器而言,它提供了很多的服务,但默认对应用不是打开的,应用需要某种服务,必须指明使用该服务,则应用只涉及该容器的核心服务,则把这种非入侵式的容器称为轻量级容器。相反,应用在用该容器时,你必须使用该容器给你提供的所有功能,这种入侵式的容器称为重量级容器。
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
重量级还是轻量级主要看它应用了多少服务。使用服务越多,对系统资源的占用也越多,负载越大,必然会影响到应用发布时间和运行性能。对于一个容器而言,它提供了很多的服务,但默认对应用不是打开的,应用需要某种服务,必须指明使用该服务,则应用只涉及该容器的核心服务,则把这种非入侵式的容器称为轻量级容器。相反,应用在用该容器时,你必须使用该容器给你提供的所有功能,这种入侵式的容器称为重量级容器。
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
发表评论
-
OmitStackTraceInFastThrow
2015-11-30 11:50 2201OmitStackTraceInFastThrow, jd ... -
classNotFoundException与noclassdeffoundError
2015-11-03 14:48 1029如名字所言,一个exception, 一个error, 而e ... -
Transfer-Encoding:chunked 和 PrintWriter.flush
2014-06-05 15:39 1097”一般http通信时会使用Content-Length头信息 ... -
一次JVM爆内存分析
2013-08-26 11:16 15491.应用没有死,但是响应非常慢,通过jstat查看到s0/s1 ... -
No generator named "uuid" is defined in the persistence unit
2013-08-01 14:55 8271You can turn the error off/down ... -
Connection reset by peer: socket write error原因
2012-08-16 17:33 0①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接D ... -
匿名内部类参数必须为final类型
2012-06-25 18:59 0匿名内部类参数必须为final类型,这是因为防止内部类引用了一 ... -
url中文乱码解决
2012-06-25 09:54 10551.jsp页面添加:<%@ page language= ... -
java各种服务器默认servlet名称
2012-03-05 14:51 1439Tomcat, Jetty, JBoss, and Glass ... -
rt.jar ,dt.jar ,tool.jar都有什么用
2012-02-04 12:02 1416rt.jar是JAVA基础类库,dt.jar是关于运行环境的类 ... -
java字符串转时间
2011-11-01 10:24 1038public class bb { publ ... -
动态更新properties
2011-08-30 15:34 1835public static void reloadPro ... -
jstl日期比较
2011-08-24 20:22 1381<c:set var="nowDate&quo ... -
jstl numberFormat & dateFormat
2011-08-24 13:31 1498<fmt:formatNumber value=&quo ... -
cygwin下用jar命令
2011-07-13 17:06 1032需要将jdk下的jar.exe拷至$cygwin_home/b ... -
war包的打包与解压
2011-07-13 16:51 1630把当前目录下的所有文件打包成game.war jar -cvf ... -
java后台较验checkbox提交值
2011-06-22 16:03 1447String dontShow = (String)r ... -
jsp function tag 不支持继承的方法
2011-06-18 23:43 938jsp function tag 不支持继承的方法. 例如:M ... -
jstl fmt:formatDate
2011-05-29 14:10 1177fmt:formatDate 的输出格式 <fmt: ... -
jstl 关键字处理
2011-05-21 13:21 1048在使用jstl时,可能会遇到实体字段与jstl关键字相撞的情况 ...
相关推荐
031301_【第13章:Java类集】_认识类集、Collection接口笔记.pdf 031302_【第13章:Java类集】_List接口笔记.pdf 031303_【第13章:Java类集】_LinkedList类笔记.pdf 031304_【第13章:Java类集】_Set接口笔记.pdf ...
Java集合排序及java集合类详解.pdf
Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。
Java邮件开发详解 Java邮件开发详解
《Java2编程详解》这本书是Java开发者的重要参考资料,它涵盖了Java语言的核心概念和技术,旨在帮助读者深入理解并熟练掌握Java2平台的编程技术。在这个压缩包中,包含了一个名为"Java2编程详解.pdf"的PDF文件,这很...
本教程“张孝祥Java邮件开发详解”深入探讨了如何使用Java来实现邮件的发送功能,涵盖了从基础概念到高级特性的全方位讲解。 首先,Java Mail API是Java中用于处理邮件的核心库,它提供了丰富的类和接口,使得...
《Java2编程详解》这本书是Java编程领域的一部经典之作,特别版的使用指南深入剖析了Java 2平台的核心技术和编程方法。这本书旨在帮助开发者掌握Java语言的基础以及高级特性,从而能够有效地进行软件开发。 首先,...
张孝祥的"Java邮件开发详解"教程无疑是学习这一主题的宝贵资源。本教程可能包含了从邮件协议理解到实际JavaMail API使用的全方位讲解。 Java邮件开发主要涉及以下几个关键知识点: 1. **邮件协议**:首先,你需要...
《Java2编程详解》是一本全面深入探讨Java编程技术的书籍,主要针对Java 2平台进行讲解。在Java 2平台上,Java语言的功能得到了极大的扩展,包括多线程、网络编程、I/O流、数据库连接、图形用户界面(GUI)以及Java...
Java扫雷代码详解 扫雷游戏作为经典的益智类游戏,在计算机编程的学习中经常被作为练习项目。尤其是在Java编程语言学习过程中,由于Java的跨平台特性和丰富的图形用户界面(GUI)组件,Java扫雷成为了许多初学者...
Java设计模式详解涵盖了在Java编程中广泛使用的一些经典设计模式。这些模式不仅有助于提高代码的可读性、可维护性和可扩展性,还能促进团队之间的沟通与协作。下面,我们将深入探讨几个重要的Java设计模式。 1. ...
Java 2编程详解
《Java2编程详解》是一本专门针对Java编程技术的深入解析书籍,Special Edition Using Java的第四版,旨在为读者提供全面、深入的Java学习资源。这本书涵盖了从基础语法到高级特性的广泛内容,适合初学者和有经验的...
Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...
Java2编程详解第四部分
《Java Bug模式详解》这本书是面向那些已经具备Java编程基础的开发者,旨在帮助他们更好地理解和解决在编程过程中遇到的各种错误和异常,提升代码质量和维护效率。书中深入剖析了Java编程中常见的bug模式,通过实例...
首先,Java入门电子书中可能涵盖了基础的Java编程概念,如变量、数据类型、控制结构、类与对象、异常处理等。这些基础知识对于理解和应用Java数据库技术至关重要。在掌握这些基本概念后,开发者可以进一步学习如何...
Java语言具有面向对象、与平台无关、简单稳定、支持多线程等特点,已经成为当下最重要的网络编程语言之一。本书分为12个章节,主要包括Java语言概述 、基本语法规则、面向对象核心技术、数组和集合、异常处理、文件...