java的集合类有哪些他们之间的关系有什么区别

Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:

Collection<--List<--Vector    数组实现 查询快、增删慢

Collection<--List<--ArrayList  数组实现 查询快、增删慢

Collection<--List<--LinkedList  链表结构 查询慢、增删快

Collection<--Set<--HashSet 自定义排序 对对象实现Comparable 重写compareTo(Object o);

Collection<--Set<--HashSet<--LinkedHashSet 按照存放时的顺序 输出

Collection<--Set<--SortedSet<--TreeSet


Vector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能

超越Array。所以,在可能的情况下,我们要多运用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的优势。

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的对应存储项。

集合中,list  set Map

set 无序,元素不可以重复

HashSet : 无序,元素不重复,如果是自定义实体对象,需要重写 hashCode() 和equals(Object obj)

TreeSet:自定义排序 对对象实现Comparable 重写compareTo(Object o);

Map 以键值对形式存储

HashMap :会自动排序,键可以为null

LinkedHashMap 按照存放时的顺序 输出

List 有顺序、有下标、元素可以重复。

ArrayList【重点】

数组实现 查询快、增删慢

jdk1.2 线程不安全,效率高

2) Vector

数组实现 查询快、增删慢

jdk1.0  线程安全、效率低

3) LinkedList

链表结构 查询慢、增删

时间: 2024-11-03 00:56:56

java的集合类有哪些他们之间的关系有什么区别的相关文章

java中的面向对象和类之间的关系

1.面向对象 a.分析问题中需要用到哪些类以及对象 b.分析以上类中或对象中应该具有哪些属性及方法 c.分析类之间的关系 (合适的方法应该出现在合适的类中) 2.举例:模板-实物 a.白板笔 b.员工(年龄.姓名.性别.工作岗位) (显示姓名,年龄,修改姓名,修改年龄,变更工作岗位) (区分对象:一般通过方法是无法区分对象的,通过属性可以区分对象) 3.类与对象 a.类是具有共同特征的一类事物的一个抽象 b.对象是这个类具体的某一个实例 4.类(对象)之间的4种关系 a.依赖关系(Depende

Java中JDK,JRE和JVM之间的关系

初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机.JDK是面向开发者的,JRE是面向使用JAVA程序的用户,上面只是简单的区别,一般网上好多都讲概念,我就不讲了,直接截图应该会更清晰一点,我安装的JDK1.8,效果如图: JDK和J

java学习之Java中JDK,JRE和JVM之间的关系(转载)

最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机.JDK是

Java 中判断类和实例之间的关系

判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 )   2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 = > 类)   3.isInstance方法,用来判断对象是否属于某个类型的实例 (类 => 对象 //use instanceof,用来判断对象是否是类的实例 System.out.println(new A() instanceof B);//类型比较 //use isAssignable

初学者对Java类、java文件、class文件的名字的关系和&quot;&amp;&quot;与&quot;&amp;&amp;&quot;之间区别的理解

一.Java类.Java文件.class文件的名的关系 在明白区别与联系时,我们需要对这些名词有了解: Java类名:Java属于面向对象编程语言,对象就是一个个类,所以Java类名是我们在编写程序时为我们定义的对象取的名字. java文件名:对于编写的Java程序我们需要有个文件来保存,保存的文件后缀为.java,.java前的便是Java文件名. class文件名:Java程序要查看结果便需要运行.class文件..class前面的便是class文件名 . 在Java程序的开发过程中,我们需

SDK、JDK、JRE 和JVM 之间的关系

SDK(Software Develop Kit,软件开发工具包),用于帮助开发人员的提高工作效率.各种不同类型的软件开发,都可以有自己的SDK.Windows有Windows SDK,DirectX 有 DirectX 9 SDK,.NET开发也有Microsoft .NET Framework SDK.JAVA开发也不含糊,也有自己的Java SDK. Java SDK最早叫Java Software Develop Kit,后来改名为JDK,即Java Develop Kit. JDK作为

Java:集合类的区别详解

Java中集合类的区别 Array是数组,不在集合框架范畴之内,一旦选定了,它的容量大小就不能改变了,所以通常在编程中不选用数组来存放. 集合 : 集合对象:用于管理其他若干对象的对象 数组:长度不可变 List: 有顺序的,元素可以重复 遍历:for .迭代 排序:Comparable Comparator Collections.sort() ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的Lis

JAVA Map集合类简介

了解最常用的集合类型之一 Map 的基础知识以及如何针对您应用程序特有的数据优化 Map. 本文相关下载: · Jack 的 HashMap 测试· Oracle JDeveloper 10g java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建.存储和操作任何类型对象元素列表.List 适用于按数值索引访问元素的情形. Map 提供了一个更通用的

[Java] Map 集合类简介

Map 的基础知识以及如何针对您应用程序特有的数据优化 Map. java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建.存储和操作任何类型对象元素列表.List 适用于按数值索引访问元素的情形. Map 提供了一个更通用的元素存储方法.Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值.从概念上