- 浏览: 938765 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 2183OmitStackTraceInFastThrow, jd ... -
classNotFoundException与noclassdeffoundError
2015-11-03 14:48 1025如名字所言,一个exception, 一个error, 而e ... -
Transfer-Encoding:chunked 和 PrintWriter.flush
2014-06-05 15:39 1094”一般http通信时会使用Content-Length头信息 ... -
一次JVM爆内存分析
2013-08-26 11:16 15301.应用没有死,但是响应非常慢,通过jstat查看到s0/s1 ... -
No generator named "uuid" is defined in the persistence unit
2013-08-01 14:55 8265You 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 10501.jsp页面添加:<%@ page language= ... -
java各种服务器默认servlet名称
2012-03-05 14:51 1436Tomcat, Jetty, JBoss, and Glass ... -
rt.jar ,dt.jar ,tool.jar都有什么用
2012-02-04 12:02 1414rt.jar是JAVA基础类库,dt.jar是关于运行环境的类 ... -
java字符串转时间
2011-11-01 10:24 1016public class bb { publ ... -
动态更新properties
2011-08-30 15:34 1832public static void reloadPro ... -
jstl日期比较
2011-08-24 20:22 1374<c:set var="nowDate&quo ... -
jstl numberFormat & dateFormat
2011-08-24 13:31 1491<fmt:formatNumber value=&quo ... -
cygwin下用jar命令
2011-07-13 17:06 1030需要将jdk下的jar.exe拷至$cygwin_home/b ... -
war包的打包与解压
2011-07-13 16:51 1616把当前目录下的所有文件打包成game.war jar -cvf ... -
java后台较验checkbox提交值
2011-06-22 16:03 1437String dontShow = (String)r ... -
jsp function tag 不支持继承的方法
2011-06-18 23:43 934jsp function tag 不支持继承的方法. 例如:M ... -
jstl fmt:formatDate
2011-05-29 14:10 1168fmt:formatDate 的输出格式 <fmt: ... -
jstl 关键字处理
2011-05-21 13:21 1043在使用jstl时,可能会遇到实体字段与jstl关键字相撞的情况 ...
相关推荐
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扫雷程序的设计 Java扫雷程序的设计主要分为三个步骤:第一步,extends ...
Java 2编程详解
《Java2编程详解》是一本专门针对Java编程技术的深入解析书籍,Special Edition Using Java的第四版,旨在为读者提供全面、深入的Java学习资源。这本书涵盖了从基础语法到高级特性的广泛内容,适合初学者和有经验的...
Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...
Java2编程详解第四部分
Java语言具有面向对象、与平台无关、简单稳定、支持多线程等特点,已经成为当下最重要的网络编程语言之一。本书分为12个章节,主要包括Java语言概述 、基本语法规则、面向对象核心技术、数组和集合、异常处理、文件...
【Java编程思想详解】 Java编程思想是理解和使用Java语言的核心理念,它不仅仅是关于语言特性的简单堆砌,而是一种设计理念,强调的是设计、抽象和问题解决。Java的强大在于其面向对象的设计,它允许开发者以更加...
3. **类的核心特性详解**: - **封装性**:封装是指隐藏对象的属性和实现细节,仅对外提供公共接口。这使得对象的内部状态不能被外部直接访问,从而提高了代码的安全性和稳定性。 - **继承性**:继承允许一个类...
这份"Java生产环境下性能监控与调优详解课程笔记(完整版)"涵盖了多个重要的知识点,旨在帮助开发者和运维人员提升Java应用的性能。 一、Java性能监控工具 1. JVisualVM:集成在JDK中的一个多用途工具,可以进行...
java, java常用集合类详解(有例子,经典呐!!!集合类糊涂的来看啊!!) 集合类详解
Java已经成为了编程语言的骄子。我们可以看到,越来越多的大学在教授数据结构、程序设计和算法分析等课程时,选择以Java语言为载体。这本<Java编程思想>赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce ...