一 .什么是java集合?集合与数组有什么区别?下面我们来详细讨论一下
1.一般地,我们把研究对象统称为元素;把一些元素组成的总体叫做集合.
2. 数组,是有序的元素序列,用于储存多个相同类型数据的集合,
数组是java语言内置的数据类型,它是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,当然检查边界会以效率为代价。
二 .数组和集合的区别
集合与数组区别
1、数组声明了它容纳的元素的类型,而集合不声明。
2、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
3、数组的存放的类型只能是一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)。
4、数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的。
三 . java集合框架图
java集合框架图
从上面的图片可以看出java集合主要分为两种类型的容器
第一种:集合(Conllection),用来存储一个元素集合
第二种:图(Map) ,用来存储键/值对映射.
其中,
Collection说明
Collection 接口对象的集合(单列集合)
====> List 接口:有序的,可重复
=======> LinkedList 接口实现类, 链表, 插入删除速度快, 没有同步, 线程不安全
=======> ArrayList 接口实现类, 数组, 访问查询快, 没有同步, 线程不安全
=======> Vector 接口实现类 ,数组,同步, 线程安全 (类可以实现可增长的对象数组。)
===========> Stack 是Vector类的实现类 (后进先出 的对象堆栈)
====>Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序
Map 接口 键值对的集合 (双列集合)
├———Hashtable 接口实现类, 同步, 线程安全
├———HashMap 接口实现类 ,没有同步, 线程不安全-
│—————–├ LinkedHashMap 双向链表和哈希表实现
│—————–└ WeakHashMap
├ ——–TreeMap 红黑树对所有的key进行排序
└———IdentifyHashMap
四.List接口说明
Listj接口说明
五. Set的说明
set接口的说明
六.Queue接口说明
Queue接口说明
七.Map
Map接口说明