java集合框架
来源:互联网 发布:软件试用期过了 编辑:程序博客网 时间:2024/06/05 16:52
与数组的对比:
1、数组的长度固定,集合长度可变;
2、数组只能通过下标访问元素,下标类型只能是数字型,而有的集合可以通过任意类型查找所映射的具体对象。
Collection接口
1、是List、Set和Queue接口的父接口;
2、定义了可用于操作List、Set和Queue的方法——增删改查;
List接口及其实现类——ArrayList
- List(序列),元素有序,并且可重复;
- List可以精确控制元素的插入位置,或删除指定位置的元素;
- ArrayList——数组序列,是List的一个重要实现类;
- ArrayList底层是由数组实现的
- ArrayList数组线性表的特点为:类似数组的形式进行存储,因此它的随机访问速度极快。
ArrayList数组线性表的缺点为:不适合于在线性表中间需要频繁进行插入和删除操作。因为每次插入和删除都需要移动数组中的元素。
ArrayList是线程不安全的,在多线程的情况下不要使用。
- 如果一定在多线程使用List的,您可以使用Vector,因为Vector和ArrayList基本一致,区别在于Vector中的绝大部分方法都 使用了同步关键字修饰,这样在多线程的情况下不会出现并发错误哦,
泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。
泛型集合中的限定类型,不能使用基本类型,必须用基本类型的包装类
list 接口及其实现类-------linkedlist
LinkedList的链式线性表的特点为: 适合于在链表中间需要频繁进行插入和删除操作。
LinkedList的链式线性表的缺点为: 随机访问速度较慢。查找一个元素需要从头开始一个一个的找。速度你懂的。
总结:a.LinkedList和ArrayList的区别和联系
ArrayList数组线性表的特点为:类似数组的形式进行存储,因此它的随机访问速度极快。
ArrayList数组线性表的缺点为:不适合于在线性表中间需要频繁进行插入和删除操作。因为每次插入和删除都需要移动数组中的元素。
LinkedList的链式线性表的特点为: 适合于在链表中间需要频繁进行插入和删除操作。
LinkedList的链式线性表的缺点为: 随机访问速度较慢。查找一个元素需要从头开始一个一个的找。
注意LinkedList和ArrayList一样也不是线程安全的,如果在对线程下面访问可以自己重写LinkedList
然后在需要同步的方法上面加上同步关键字synchronized
Set接口及其实现类——HashSet
- Set(集),元素无序,并且不可以重复,最多允许一个null元素;
- HashSet——哈希集,是Set的一个重要实现类;
- 虽然Set中元素没有顺序,但是元素在set中的位置是有由该元素的HashCode决定的,其具体位置其实是固定的。
Map接口
- Map提供了一种映射关系,元素是以键值对(key-value)的形式存储的,能根据key快速查找value;
- Map中的键值对以Entry类型的对象实例形式存在;
- key值不能重复,value值可以重复;
- key对value是多(一)对一的关系;
- Map接口提供了返回key值集合、value值集合、Entry值集合,的方法;
- Map支持泛型,形式如:Map<K,V>
HashMap类
- HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;
- HashMap中的Entry对象是无序排列的;
- Key值和value值都可以为null,但是一个HashMap只能有一个Key值为null的映射(Key值不可重复);
HashMap与Hashtable的区别:
Hashtable实现Map接口,继承自古老的Dictionary类,实现一个key-value的键值映射表。任何非空的(key-value)均可以放 入 其中。
区别主要有三点:
1. Hashtable是基于陈旧的Dictionary实现的,而HashMap是基于Java1.2引进的Map接口实现的;
2. Hashtable是线程安全的,而HashMap是非线程安全的,我们可以使用外部同步的方法解决这个问题。
3. HashMap可以允许你在列表中放一个key值为null的元素,并且可以有任意多value为null,而Hashtable不允许键或者值为null。
- Java集合:集合框架
- 【Java】java集合框架
- [Java]Java集合框架
- JAVA集合框架和集合
- 【集合】Java集合框架介绍
- Java集合之集合框架
- [集合]Java的集合框架 Collection集合
- Java集合框架 (一)
- Java集合框架 (二)
- Java集合框架(三)
- Java集合框架
- 也来谈Java集合框架
- 也来谈Java集合框架
- Java集合框架 (一)
- Java集合框架
- 也来谈Java集合框架
- java集合框架
- Java集合框架总结
- Spring里的Bean继承与Java继承的区别
- Python爬虫学习纪要(二):BeautifulSoup相关知识点2
- auto register static分析
- 友元
- caffe中添加新层
- java集合框架
- 【四方向型】虚拟摇杆 C#代码部分(1)--基本参数与动画方法
- Linux学习笔记--基础指令
- LwIP随笔01
- HDU 3579 Hello Kiki
- js屏蔽手机返回键
- 第二章、flume的安装
- 从TensorFlow到Theano:横向对比七大深度学习框架
- hdu 2019 数列有序!