![]()
数组类
Array是
Java中最基本的一个存储结构。它用于存储一组连续的对象或基本类型的数据。其中的元素的类型必须相同。
Array是最有效率的一
种:
1、效率高,但容量固定且无法动态改变。
Array还有一个缺点是,无法判断其中实际存有多少元素,
length只是告诉我们
Array的容量。
2、
Java中有一个
Arrays类,专门用来操作
Array,提供搜索、排序、复制等静态方法。
equals():比较两个
Array是否相等,
Array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入
Array中。
sort():用来对
Array进行排序。
binarySearch():在排好序的
Array中寻找元素。
System.arraycopy():
Array的复制。
Java Collections Framework成员主要包括两种类型,即:
Collection和
Map类型。
在
Java中提供了
Collection和
Map接口。其中
List和
Set继承了
Collection接口;
Vector、
ArrayList、
LinkedList三个类实现
List接口,
HashSet、
TreeSet实现
Set接口,
HashTable、
HashMap、
TreeMap实现
Map接口。由此可见,
Java中用
8种类型的基本数据结构来实现其
Collections Framework;下面分别进行介绍。
Vector:基于
Array的
List,性能也就不可能超越
Array,并且
Vector
是
"sychronized"
的
,这个也是
Vector和
ArrayList的唯一的区别。
ArrayList:同
Vector一样是一个基于
Array的,但是不同的是
ArrayList不是同步的
。所以在性能上要比
Vector优越一些,但
是当运行到多线程环境中时,可需要自己在管理线程的同步问题。从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快。
LinkedList:
LinkedList不同于前面两种
List,它不是基于
Array的,所以不受
Array性能的限制。它每一个节点(
Node)
都包含两方面的内容:
1、节点本身的数据(
data);
2、下一个节点的信息(
nextNode)。所以当对
LinkedList做添加,删除动作的时候
就不用像基于
Array的
List一样,必须进行大量的数据移动。只要更改
nextNode的相关信息就可以实现了所以它适合于进行频繁进行插入和删除操
作。这就是
LinkedList的优势。
Iterator只能对容器进行向前遍历,而
ListIterator则继承了
Iterator的思想,并提供了对
List进行双向遍历的方法。
List总结:
1、所有的
List中只能容纳单个不同类型的对象组成的表,而不是
Key-
Value键值对。例如:
[ tom,1,c ];
2、所有的
List中可以有相同的元素,例如
Vector中可以有
[ tom,koo,too,koo ];
3、所有的
List中可以有
null元素,例如
[ tom,null,1 ];
4
、基于
Array
的
List
(
Vector
,
ArrayList
)适合查询,而
LinkedList
(链表)适合添加,删除操作
。
HashSet:虽然
Set同
List都实现了
Collection接口,但是他们的实现方式却大不一样。
List基本上都是以
Array为基础。但是
Set则是在
HashMap的基础上来实现的,这个就是
Set和
List的根本区别。
HashSet的存储方式是把
HashMap中的
Key作为
Set的
对应存储项,这也是为什么在
Set中不能像在
List中一样有重复的项的根本原因,因为
HashMap的
key是不能有重复的。
HashSet能快速定位
一个元素,但是放到
HashSet中的对象需要实现
hashCode()方法
0。
TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类
Comparable和
Comparator。一个类是可排序的,它就应该实现
Comparable接口。有时多个类具有相同的排序算法,那就不需要重复定义相同的排序算法,只要实现
Comparator接口即可。
TreeSet是
SortedSet的子类,它不同于
HashSet的根本就是
TreeSet是有序的。它是通过
SortedMap来实现的。
Set总结:
1、
Set实现的基础是
Map(
HashMap);
2、
Set中的元素是不能重复的,如果使用
add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象;
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢
? 是用
==还是
equals()? 它们有何区别
? Set里的元素是不能重复的,即不能包含两个元素
e1、
e2(
e1.equals(
e2))。那么用
iterator()方法来区分重复与否。
equals()是判读两个
Set是否相等。
==方法决定引用值
(句柄
)是否指向同一对象。
HashMap、
TreeMap、
Hashtable:
1、
HashMap也用到了哈希码的算法,以便快速查找一个键,
TreeMap则是对键按序存放,因此它有一些扩展的方法,比如
firstKey(),lastKey()等。
2、
Hashtable:不允许空(
null)键(
key)或值(
value),
Hashtable的方法是
Synchronize的,在多个线程访问
Hashtable时,不需要自己为它的方法实现同步,而
HashMap 就必须为之提供外同步。
Hashtable和
HashMap采用的
hash/rehash算法都大概一样,所以性能不会有很大的差异。
3、
HashMap和
Hashtable的区别:
HashMap是
Hashtable(线程案例的
)的轻量级实现(非线程安全的实现),他们都完成了
Map接口。主要区别在于
HashMap
允许空(
null
)键
(
key
)或值(
value
)
,
非同步,由于非线程安全,效率上可能高于
Hashtable。
Map总结:
是一种把键对象和值对象进行关联的容器,
Map有两种比较常用的实现:
HashTable、
HashMap和
TreeMap。
转载自http://www.blogjava.net/jicheng687/archive/2011/03/07/345879.html
分享到:
相关推荐
### Java集合框架经典面试题详解 #### 1. Java集合框架概述及优点 - **定义**: Java集合框架是一个设计模式,用于组织和操纵对象集合。它由一系列接口、实现类和算法组成,提供了统一的方式管理和操作数据集合。...
6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...
集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中
面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣...
Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...
JAVA学习 Java集合框架.ppt
本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!
一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...
Java集合框架是Java编程语言中的核心部分,它提供了一组高效、灵活的数据结构,使得开发者可以方便地存储和管理各种类型的数据。Java集合框架主要包括两大类:Collection和Map。 Collection接口是所有单值容器的父...
Java集合List集合Set集合Map集合Collection和collections工具类的框架图
List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...