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 : 基于ArrayList,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能

超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是Vector

ArrayList的唯一的区别。

ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但

是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

LinkedListLinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方

面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像

基于ArrayList一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。

List总结:

1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是KeyValue键值对。例如:[ tom,1,c ]

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]

3. 所有的List中可以有null元素,例如[ tom,null,1 ]

4. 基于ArrayListVectorArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

HashSet:虽然SetList都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是

HashMap的基础上来实现的,这个就是SetList的根本区别。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

链表结构 查询慢、增删

本文转自12691034博客51CTO博客,原文链接http://blog.51cto.com/12701034/1967676如需转载请自行联系原作者


笑容掩饰爱

相关文章
|
23天前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
25 0
|
2天前
|
Java 编译器
Java Character 类
4月更文挑战第13天
|
3天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
6天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
6天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
10 0
|
6天前
|
存储 Java 编译器
Java集合丛林:深入了解集合框架的秘密
Java集合丛林:深入了解集合框架的秘密
11 0
Java集合丛林:深入了解集合框架的秘密
|
8天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
21 9
|
9天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
9天前
|
存储 安全 Java
java多线程之原子操作类
java多线程之原子操作类
|
9天前
|
Java BI
Java 获取周,月,年日期集合(统计图)
Java 获取周,月,年日期集合(统计图)
Java 获取周,月,年日期集合(统计图)