- 浏览: 96097 次
- 性别:
文章分类
- 全部博客 (151)
- Spring-MVC学习 (5)
- 偶然间发现 (2)
- easyUi学习 (7)
- web项目相关技术 (4)
- java学习 (26)
- webService (4)
- 一些工具的安装使用 (7)
- js学习 (20)
- Sping学习 (7)
- mybatis学习 (5)
- 定时器 (4)
- oracle (2)
- JSP学习 (6)
- HTML一些标签 (1)
- web服务 (2)
- 偶尔得到的地址 (2)
- 常用的代码记录 (2)
- 设计模式 (1)
- java常使用的开源API (1)
- maven (1)
- Socket (1)
- nginx (2)
- jquery (3)
- poi (2)
- 写过的工具类 (19)
- 微信开发 (2)
- mysql (1)
- freemarker (2)
- ftp (1)
- 用过的软件 (1)
- jconsole (1)
- log4j (1)
- redis的简单入门使用 java调用redis (0)
- redis的使用 (2)
- 生活相关的 (1)
最新评论
-
chokee:
...
easyUi学习之开启行编辑模式增删改操作 -
lijie_insist:
就是有的界面需要显示天气啊!所以你要调用天气的接口啊 因为很多 ...
免费的天气接口的一个demo -
zhglance:
请问这是干什么用的呢?
免费的天气接口的一个demo
Java集合框架Collection,不管是面试还是开发中用的都是比较多的,其中一些区别也是问的比较多
------HashMap VS HashTable
HashMap 和 HashTable 都是实现的Map<K,V>接口,Map<K,V>就是一个上级接口,它没有继承别的接口,
从他们的定义中可以看出他们都是实现的map接口,但是HashMap继承的AbstractMap 而HashTable集成的是Dictionary
api定义上面还有一句话的区别:The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.
综上: HashMap是线程不安全的 HashTable是安全的,且HashMap能允许空值作为key or value
------List<E> VS set<E>
collection接口集成的Iterator接口,而List和set都是实现了Collection接口
List是一个有序的序列,Set是一个无序的容器,且不能有空元素和不能有重复元素
------ArrayList<E> 和 Vector<E> 和 LinkedList<E>
三者都实现了List接口,所以三者都是有序的,
Vector和ArrayList基本是一样的 除了Vector是线程安全的(synchronized)
ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有缺点: 快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。 向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。 操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。
LinkedList LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点: 操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方 不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。
HashSet<E> 实现了set<E>接口
上面的描述> 实际是一个hashMap实例,这个类允许空元素
虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在 HashMap的基础上来实现的,这个就是Set和List的根本区别。
HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。看看 HashSet的add(Object obj)方法的实现就可以一目了然了
所以,Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象
------HashMap VS HashTable
HashMap 和 HashTable 都是实现的Map<K,V>接口,Map<K,V>就是一个上级接口,它没有继承别的接口,
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,Cloneable,Serializable
public class HashTable<K,V> extends Dictionary<K,V> implements Map<K,V>,Cloneable,Serializable
从他们的定义中可以看出他们都是实现的map接口,但是HashMap继承的AbstractMap 而HashTable集成的是Dictionary
api定义上面还有一句话的区别:The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.
综上: HashMap是线程不安全的 HashTable是安全的,且HashMap能允许空值作为key or value
------List<E> VS set<E>
public interface Iterator<T> T- the type of elements returned by the iterator
public interface Collection<E> extends Iterator<E> E - the type of elements in this collection
public interface List<E> implements Collection<E> An ordered collection (also known as a sequence).
public interface Set<E> implements Collection<E> A collection that contains no duplicate elements and at most one null element.
collection接口集成的Iterator接口,而List和set都是实现了Collection接口
List是一个有序的序列,Set是一个无序的容器,且不能有空元素和不能有重复元素
------ArrayList<E> 和 Vector<E> 和 LinkedList<E>
public ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable (Implements all optional list operations, and permits all elements, including null and This class is roughly equivalent toVector, except that it is unsynchronized)
public Vector<E> extends extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
public LinkedList<E> extends AbstractSequentialList<E> implements List<E>,Deque<E>,Cloneable,Serializable
三者都实现了List接口,所以三者都是有序的,
Vector和ArrayList基本是一样的 除了Vector是线程安全的(synchronized)
ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有缺点: 快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。 向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。 操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。
LinkedList LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点: 操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方 不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。
HashSet<E> 实现了set<E>接口
public class HashSet<E> extends AbstractSet<E> implement Set<E>,Serializable,Cloneable (actually a HashMap instance,This class permits the null element)
上面的描述> 实际是一个hashMap实例,这个类允许空元素
虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在 HashMap的基础上来实现的,这个就是Set和List的根本区别。
HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。看看 HashSet的add(Object obj)方法的实现就可以一目了然了
所以,Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象
发表评论
-
ajax的分页分页请求,通过ajax来分页
2015-12-01 14:55 439这里面通过自定义标签实现的,因为项目没有采用jsp模板而是用的 ... -
java学习之JAXB解析xml
2015-08-17 09:07 904时间仓促,只记录代码 //实体类 package com.w ... -
生成验证码的方法
2015-07-17 08:43 2忘了在哪里参考过代码,后来自己参照了写了这一段code pac ... -
javax.mail邮件发送返回状态吗
2015-07-02 17:35 1570项目需要集成邮件发送,之前在.net下写过smtp的邮 ... -
javax.mail邮件发送
2015-06-30 12:50 0package com.demo.common; impor ... -
java的(PO,VO,TO,BO,DAO,POJO)解释
2015-06-04 11:31 424原地址:http://www.cnblogs. ... -
JDBC学习
2015-04-21 10:02 286原文来自:http://blog.csdn.net/fight ... -
j2ee web项目的基本结构
2015-03-20 14:50 521原地址:http://www.cnblogs.co ... -
HTTP 返回的状态码的含义
2015-03-20 14:38 429在网上看到的,总结的蛮 ... -
java学习之try catch finally中的return语句执行
2015-03-10 14:21 525http://blog.csdn.net/kavensu/ar ... -
java反射机制的学习
2015-03-06 13:39 341http://blog.csdn.net/zzjjiandan ... -
java学习之时间类的使用
2015-03-06 10:26 463有时候要对时间进行各方面的操作,这里就记录下最近使用到的对时间 ... -
为什么接口的属性用public static final修饰
2015-03-05 09:14 549每次只是看了看.好多都没去实践和去想! 自己写了个接口才会想到 ... -
正则表达式的学习
2015-03-04 11:10 338http://help.locoy.com/Document/ ... -
面向对象的特征
2015-03-02 17:56 372今天看到一篇文章对面 ... -
Class.forName("className"),class.getClass,class.class区别
2015-02-27 17:43 379今天看java.lang.reflect包中的信息时,想到了这 ... -
java调用webservice(asmx)的例子
2015-02-04 16:54 424转自:http://www.blogjava.net/jerr ... -
java学习之流的学习
2015-01-21 14:12 370因为经常用到流,并且发现java中的数据流的确很多种类,而自己 ... -
java学习之图片上传,下载显示demo
2015-01-19 10:43 2542每次都是用的框架来弄 ... -
java学习之String的一些处理函数
2014-12-12 17:17 554前两天开发一个关于解析数据的一个小功能,发现需要大肆的用到St ...
相关推荐
此外,还介绍了一种名为 JGL (Java Generic Library) 的第三方库,该库在 Java Collection Framework 出现之前就已经存在,并且提供了一些额外的功能。 #### 八、总结 《Java Collection Framework》这本书不仅是...
Java集合框架是Java编程语言中一个非常重要的组成部分,它为数据存储和操作提供了丰富的接口和类。本篇文章将深入解析`Collection`接口及其主要实现类`List`和`Set`,帮助你理解并熟练运用这些核心概念。 首先,`...
Java.util.Collection类的学习 Java.util.Collection类是Java编程语言中的一个基础类库,提供了许多有用的方法来操作集合对象。Collection类包含了许多静态方法,可以对集合进行排序、混排、反转、替换等操作。 1....
这是java学习总结出来的,关于collection方面的一些知识,供学习参考。
在这个Java集合类的学习资料中,我们将深入探讨`Collection`以及与其相关的`TreeMap`、`Set`和`List`等概念。 首先,我们从`Collection`接口开始。`Collection`接口是`java.util`包下的核心接口,它定义了集合的...
Java集合框架是Java编程语言中一个非常核心的部分,它提供了数据结构和算法的实现,使得开发者可以方便地存储和管理对象。在这个学习笔记中,我们将深入探讨ArrayList、HashMap、LinkedList和HashSet这四个重要的...
【Java学习成套PPT】是一份全面的Java学习资源,包含了从基础知识到高级框架的系统教程。这个压缩包中的内容旨在帮助初学者逐步掌握Java编程语言,同时也适合有一定经验的开发者温故知新或者深入特定领域。让我们...
总的来说,Java中的`Collection`框架是编程的核心工具之一,理解其工作原理和使用技巧,能够帮助开发者编写出更加高效、可靠的代码。通过深入学习和实践,你可以更好地驾驭这个强大的工具集,提升你的编程能力。
这个"java学习文档.rar"压缩包包含了一系列的PPT文件,涵盖了Java的基础知识到进阶主题,是学习Java编程的理想资源。 首先,"Java语法.ppt"文件会详细讲解Java的核心语法,包括变量、数据类型、控制流语句(如if-...
### Java垃圾回收(Garbage Collection)深度解析 #### 核心概念与机制 Java垃圾回收(Garbage Collection,简称GC)是Java运行时环境(JRE)中的一个关键特性,它自动管理对象的生命周期,释放不再使用的对象所...
### JAVA学习基本路线 在Java的学习过程中,有一个清晰的学习路径对于初学者来说至关重要。下面将根据给定的信息,详细介绍Java学习的基本路线。 #### 第一阶段:J2SE基础学习 在这一阶段,主要关注Java标准版...
《JAVA COLLECTION》是一本专注于Java集合框架的书籍,由APress出版社出版。这本书深入浅出地探讨了Java API中的各种数据结构,是学习和理解Java集合框架的理想资源。作者通过简洁明了的语言,使得初学者也能轻松...
Java学习路线是一个逐步深入的过程,尤其对于初学者来说,一个清晰的计划至关重要。以下是对Java学习路线的详细解析: **第一阶段:Java基础** - **Java开发介绍**:理解DOS命令,掌握JVM(Java虚拟机)、JRE(Java...
在Java编程语言中,集合(Collection)框架是用于存储和操作对象的重要部分。这个框架提供了多种数据结构,如栈(Stack)、队列(Queue)、表(List)和包(Set),来满足不同的需求。让我们深入探讨一下这些集合...
Java是一种广泛使用的高级编程语言,以其面向对象的特性、跨平台的兼容性和强大的功能而闻名。...以上知识点涵盖了Java的基本特性、核心概念以及一些高级特性,理解这些将有助于深入学习和使用Java进行软件开发。
"java学习资料.zip"包含了两本经典书籍的中文版本:《Effective Java》的第一版和第二版,这些都是Java开发者深入理解语言特性和最佳实践的重要资源。 《Effective Java》是由Joshua Bloch编写的,他是一位经验丰富...
### 知识点详解:Java学习之路——从入门到精通 #### 一、工具篇:JDK —— Java的核心 **JDK (Java Development Kit)**是Java开发的基础,包含了Java运行环境(JRE),一系列Java工具,以及Java基础的类库(rt.jar)...
Java集合框架是Java编程语言中的一个核心组件,它为数据存储和管理提供了强大的支持。这个框架包括了多种接口和类,使得程序员可以高效地处理对象集合。...Java集合框架的深入学习对于提升Java编程技能至关重要。
根据给定文件的信息,我们可以提炼出以下详细的Java学习目标及相关知识点: ### 1. 面向对象设计与分析(OOA/OOD)及模式 深入理解并掌握面向对象的设计原则,包括GOF(Gamma、Helm、Johnson、Vlissides)设计模式...
Java编程语言的学习是一个深入理解其基础技术的过程,其中包括对关键字、异常处理、内存管理、类与接口、逻辑运算以及集合框架等多个方面的掌握。在本文中,我们将深入探讨这些关键概念。 首先,`final`关键字在...