一、数组和集合的区别:
数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型);
集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。
数组和集合相比唯一的有点就是速度快。
二、Java集合分类:
1.Collection(接口):派生的两个子接口:List和Set
List(列表):有序、可重复元素,可以插入多个null元素。实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
Set(集):无序、不可重复元素,最多有一个null元素。
2.Map(映射):不是collection的子接口或者实现类,Map是一个接口。Map 接口最流行的几个实现类是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。
三、几个重要区别
1. List、Set和Map的区别
List:有序、可重复元素,可以插入多个null元素。
Set:无序、不可重复元素,最多有一个null元素。
Map:集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有些实现类能对集合中的键对象进行排序。
2.ArrayList和LinkedList的区别?
(1). ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
(2). 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
(3). 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
3.HashTable和HashMap的区别?
(1). HashTable:继承自Dictionary类,不接受为null的键值(key)和值(value),线程安全
(2). HashMap:继承自AbstractMap类,可接受为null的键值(key)和值(value),线程不安全