ArrayList和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入数据,都允许直接按序号索引元素,
但是插入数据要涉及到数组元素移动等内容操作,所以索引数据快插入数据慢。
Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,
但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。
一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。
此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
List接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,
类似于数组下标)来访问List中的元素,这类似于java的数组.和Set不同,List允许有相同的元素。
实现List接口的常用类有ArrayList LinkedList Vector和Stack
Set接口
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false Set最多有一个null元素
Map接口
Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。
Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射。
总结 如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。
附:Hashtable和HashMap的区别
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,
在只有一个线程访问的情况下,效率要高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,
而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
heap和stack有什么区别
java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,
用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。
堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,
所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。
分享到:
相关推荐
### Java集合小结 #### 一、集合的概念与重要性 集合是Java编程语言中用于存储、管理和操作数据的一种重要工具。它提供了多种数据结构来适应不同的应用场景,从而有效地提高程序开发效率。从数据结构的角度来看,...
### 集合小结 Collection #### Java集合概述 Java中的集合是一组对象的组合,类似于C++标准模板库中的容器。但是与C++不同的是,Java集合不仅可以存储单一类型的数据,还可以存储不同类型的对象。这使得Java集合...
【集合概念】集合是数学中的基本概念,它是由一些确定的、互不相同的...总的来说,这个集合单元小结涵盖了集合理论的基本概念、性质、运算和它们在实际问题中的应用,旨在通过练习帮助学生巩固和熟练掌握这些基础知识。
集合是数学中一个非常基础且重要的概念,它广泛应用于各种数学领域和实际问题中。在本课时的学习中,我们对集合的相关知识进行了系统的复习和深化理解,旨在帮助学生掌握集合的基本定义、性质和运算方法,以及如何将...
例如,所有自然数的集合记为N,整数集合为Z,有理数集合为Q,实数集合为R。 - 元素属性:互异性(每个元素都是独一无二的)、无序性(元素的排列顺序不影响集合)、确定性(一个对象要么在集合内,要么不在)。 - ...
在浙江省苍南县巨人中学2014-2015学年的高中数学复习小结中,重点涉及了以下几个知识点: 1. **集合的含义与表示**: - **元素的性质**:集合中的元素具有唯一性,互异性,无序性。即每个元素在集合中是唯一的,...
字典和集合综合案例;遍历字典中所有的“键-值”对需要用到items()方法,该方法以列表形式返回可遍历的“(键,值)”元组。;当不需要使用字典中的值时,可使用keys()方法只遍历字典中的键,该方法以列表返回一...课程小结
C++程序设计实现集合交集并集差集 本文主要介绍了使用 C++ 语言实现集合的交集、并集和差集运算。该程序设计了一个名为 int_set 的类,用于表示一个整数集合。该类中包含了多个成员函数,用于实现集合的基本运算,...
Java 集合概览小结 Java 集合概览是 Java 语言中的一种重要组件,提供了多种类和接口来帮助我们存储和管理对象集合。Java Collection API 中的集合类主要位于 java.util 包中,同时也有一些与并发相关的集合类位于 ...
本文实例讲述了python判断一个集合是否包含了另外一个集合中所有项的方法。... 您可能感兴趣的文章:Python中集合类型(set)学习小结Python set集合类型操作总结Python中的集合类型知识讲解Python通过递归遍历出
【集合问题小结】 在Java编程中,集合是用来存储多个对象的容器,它们提供了比数组更灵活的操作方式。集合框架是Java中一个重要的部分,它包括多种数据结构,如List、Set和Map等。本篇将重点讨论泛型、匿名内部类...
本文将对这些方法进行简要的小结,并重点介绍其中的两种技术:等价类划分法和边界值分析法。 等价类划分法是一种非常实用的测试设计方法。它的核心思想是将输入数据的集合划分为若干个等价类,每个等价类中的数据被...
软件测试方法小结 本文将对软件测试方法进行总结,涵盖划分等价类、边界值分析、语句覆盖、判定覆盖、条件覆盖、路径覆盖、判定-条件覆盖、功能测试的常用方法、界面测试的常用方法等方面。 一、划分等价类 划分...
### 银行业务系统小结 #### 一、银行业务系统基础知识 银行业务系统是银行内部处理各类金融交易和客户信息的复杂网络,涵盖了从账户管理、交易处理到风险管理等多个方面。为了确保数据的准确性和系统的高效运行,...
在高中数学的学习中,集合与函数的概念是基础且重要的部分,尤其在新人教A版必修3中,这部分内容被详细地讲解。本课时主要围绕集合的子集、真子集、交集、并集、补集的概念展开,旨在帮助学生理解和掌握集合间的运算...
HTML5是现代网页开发的重要标准,它引入了许多新的元素和特性,使得开发者能够构建更加丰富、交互性更强的网页应用。... 1. **<canvas> 标签** ...通过JavaScript,我们可以对canvas进行绘图操作,画出一个从0%到100%填充...
MongoDB的固定集合(capped collection)是一种特殊的集合类型,具有预定义的大小限制和循环性质,类似于一个有限的环形缓冲区。当固定集合达到其容量限制时,新的文档将会覆盖最早插入的文档,实现了自动淘汰旧数据...
表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串、数字、元组等 包含可变对象的列表、字典和...
"C语言数据结构的小结"是一个针对初学者的指南,旨在帮助他们理解并掌握C语言中的数据结构概念。数据结构是计算机科学的核心组成部分,它涉及到如何有效地组织和管理数据,以便于高效地访问和操作。 首先,我们要...