单列集合基本框架

List接口特点:
1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。

2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。

3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。

4.List 接口提供了特殊的迭代器,称为 ListIterator,除了允许 Iterator 接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。

List接口常用实现类:

## vector集合
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。

由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的

特点:1.线程同步的2.底层是数组实现的

特有方法

Enumeration<E> elements()

##ArrayList集合
1.底层是数组实现的
2.不是线程同步的
3.查询比较快
java.util.ArrayList`集合数据存储的结构是数组结构。方便元素随机访问。

## LinkedList集合
1.底层是一个链表实现的
2.不同步。线程不安全
3.增删是比较快的,原因在底层.
LinkedList`集合数据存储的结构是链表结构。方便元素添加、删除的集合

##区别:

Vector & ArrayList

1)Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的

方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。

2)当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,

而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。

ArrayList & LinkedList

ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,

但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:

## Enumeration和Iterator接口的区别

Iterator替代了Enumeration,Enumeration是一个旧的迭代器了。

与Enumeration相比,Iterator更加安全,因为当一个集合正在被遍历的时候,它会阻止其它线程去修改集合。

区别有三点:

Iterator的方法名比Enumeration更科学

Iterator有fail-fast机制,比Enumeration更安全

Iterator能够删除元素,Enumeration并不能删除元素

## ListIterator有什么特点
ListIterator继承了Iterator接口,它用于遍历List集合的元素。

ListIterator可以实现双向遍历,添加元素,设置元素

 Set接口特点:

1.存取无序

2.没有索引,不能通过普通for循环遍历

3.不允许元素重复

Set接口常用实现类

##TreeSet集合

底层:红黑树,可以实现元素的自然排序和定制排序
解析:treeSet底层是用TreeMap实现的,构造方法中会创建一个TreeMap的实例,用于存放元素。添加元素时,需要先判断当前有无比较器,如果有,则根据比较器的比较规则进行排序,如果没有,则根据元素本身的特性进行排序。

##HashSet集合

底层:哈希表
解析:hashSet实现了Set接口,底层采用的是hash表,实际上采用的是一个HashMap的实例,在HashSet中,所有的元素都是存储到HashMap键值对的key上面,而value有一个统一的值。  

hashSet不存入相同的元素是因为,重写了hashCode()和equals()

##LinkedHashSet

LinkedHashSet内部使用的是LinkHashMap。这样做的意义或者好处就是LinkedHashSet中的元素顺序是可以保证的,也就是说遍历序和插入序是一致的。

## HashSet与TreeSet的区别

HashSet 【线程不安全,存取速度快,底层是hash实现】
TreeSet 【红黑树数据结构,默认对元素自然排序】

Map接口

Map是Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。Map包含了key-value对。Map不能包含重复的key,但是可以包含相同的value。

Map接口常用实现类:

##HashMap:

数组方式存储key/value,线程非安全允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值,然后再进行计算,每次容量扩容会重新计算所以key的hash值,会消耗资源,要求key必须重写equals和hashcode方法

  默认初始容量16,加载因子0.75,扩容为旧容量乘2,查找元素快,如果key一样则比较value,如果value不一样,则按照链表结构存储value,就是一个key后面有多个value;

##Hashtable

  Hashtable与HashMap类似,是HashMap的线程安全版,它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢,它继承自Dictionary类,不同的是它不允许记录的键或者值为null,同时效率较低,

特有方法

Enumeration<E> elements()

##LinkedHashMap

LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。

##TreeMap

  基于红黑二叉树的NavigableMap的实现,线程非安全,key不允许null,key不可以重复,value允许重复,存入TreeMap的元素应当实现Comparable接口或者实现Comparator接口,会按照排序后的顺序迭代元素,两个相比较的key不得抛出classCastException。主要用于存入元素的时候对元素进行自动排序,迭代输出的时候就按排序顺序输出

##HashMap&##Hashtable的区别

是否允许为null:

HashMap允许为null

Hashtable不允许为null

contains方法

Hashtable有contains方法

HashMap把Hashtable的contains方法去掉了,改成了containsValue和containsKey

继承不同:

HashMap<K,V> extends AbstractMap<K,V>

public class Hashtable<K,V> extends Dictionary<K,V>

Java集合框架(List,Set,Map)的更多相关文章

  1. Java集合框架List,Map,Set等全面介绍

    Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I]   +--java.util.ArrayList [C]   +- ...

  2. 【转】Java集合框架List,Map,Set等全面介绍

    原文网址:http://android.blog.51cto.com/268543/400557 Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含 ...

  3. 34、Java集合框架List,Map,Set等全面介绍(转载)

      Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构.   Java集合框架的基本接口/类层次结构: java.util.C ...

  4. java 集合框架(十六)Map

    一.概述 Map是一个包含键值对的集合,一个map不能有重复的键(key),而且每个键至多只能对应一个值.Map同Collection一样,它的所有通用实现都会提供一个转换器构造函数,接收一个Map类 ...

  5. Java集合框架之map

    Java集合框架之map. Map的主要实现类有HashMap,LinkedHashMap,TreeMap,等等.具体可参阅API文档. 其中HashMap是无序排序. LinkedHashMap是自 ...

  6. 【JAVA集合框架之Map】

    一.概述.1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...

  7. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  8. 我所理解Java集合框架的部分的使用(Collection和Map)

    所谓集合,就是和数组类似——一组数据.java中提供了一些处理集合数据的类和接口,以供我们使用. 由于数组的长度固定,处理不定数量的数据比较麻烦,于是就有了集合. 以下是java集合框架(短虚线表示接 ...

  9. 【由浅入深理解java集合】(一)——集合框架 Collction、Map

    本篇文章主要对java集合的框架进行介绍,使大家对java集合的整体框架有个了解.具体介绍了Collection接口,Map接口以及Collection接口的三个子接口Set,List,Queue. ...

  10. 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射

    从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射.Collection 接口又有 3 ...

随机推荐

  1. Java类初始化顺序,大神3个示例带你躺坑。。

    最近发现微信群里面有些群友在讨论类的初始化顺序,如类的静态变量.成员变量.静态代码块.非静态代码块.构造器,及继承父类时,它们的初始化顺序都是怎样的,下面我通过例子来说明这个情况,以免被人误导. 示例 ...

  2. C# WinfForm 控件之dev报表 XtraReport (五) 并排报表

    有了前边的基础这个就很简单了,建一个容器报表 在detail,上放两个xrsubReport.再做两个明细报表,分别指定到xrsubreport就可以了

  3. 总分 Score Inflation

    题目背景 学生在我们USACO的竞赛中的得分越多我们越高兴. 我们试着设计我们的竞赛以便人们能尽可能的多得分,这需要你的帮助 题目描述 我们可以从几个种类中选取竞赛的题目,这里的一个"种类& ...

  4. VMware中 CentOS7挂载windows共享文件夹

    在编译自己的hadoop时,不想再次在虚拟机中下载jar包,就想到了挂载自己本地的maven仓库,使用本地仓库来进行编译,这里就需要使用VMware的VMware Tools了,直接复制官方文档如下 ...

  5. Vuex 源码解析

    先来看一下这张Vuex的数据流程图,熟悉Vuex使用的同学应该已经有所了解. Vuex实现了一个单向数据流,在全局拥有一个State存放数据,所有修改State的操作必须通过Mutation进行,Mu ...

  6. RHEL5/6/7中常用命令及命令之间的差异

    System basics Task RHEL5 RHEL6 RHEL7 View subscription information /etc/sysconfig/rhn/systemid /etc/ ...

  7. 关于mysql的权限的问题

    昨天因为同学的mysql数据库不知道做了什么操作,从而导致root用户无法使用了 具体是使用root用户不需要密码 进去只能看 看到 infomation_schema 表 ,感觉root权限丢失了 ...

  8. 爬虫那些事儿--Http返回码

    由于爬虫的抓取也是使用http协议交互.因此需要了解Http的各种返回码所代表的意义,才能判断爬虫的执行结果. 返回码如下: 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部 ...

  9. css盒子模型概念

    CSS css盒子模型 又称框模型 (Box Model) ,包含了元素内容(content).内边距(padding).边框(border).外边距(margin)几个要素.如图: 图中最内部的框是 ...

  10. Vue for循环 例子

    demo <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...