数组的长度是固定,集合的长度是能够动态改变的java
没法预测存储数据的数量数组
存储具备一对一关系的数据code
数据的增删对象
数据重复问题,用set集合解决blog
集合只能使用引用数据类型,虽然数字能传进去,实际上是java内部的一个自动装箱的操做(如int型转成了Integer型)排序
ArrayList底层是数组实现的,因此是连续存储,查询快接口
LinkedList底层是双向链表实现的,增长和删除快,查询快rem
HashSet是哈希表实现的,是无序的,他元素能够是null,但只能有一个nullget
TreeSet是基于二叉树实现的,能够自动排序,不容许放nullhash
HashMap适用于在Map插入、删除和定位元素
TreeMap适用于按天然顺序对键值对进行遍历
无参构造是默认初始化容量10
数组实现,有序可重复
可动态增加
元素可有null
元素无需且不可重复
只容许一个null元素
set集合在读取数据的时候不容许删除操做
set.remove(collection c)支持从set中删除c这样的子集
//删除年龄大于5个月的并从新输出 Set<Cat> newSet= new HashSet<Cat>(); for (Cat c:set) { if (c.getMonth()>10) newSet.add(c); } set.removeAll(newSet);
当添加一个数据的时候,会调用hashCode()方法,获得hash code值,经过这个值能够找到数据的存储位置(不是单个位置,是一片区域,该区域的hash code值是相等的),当能找到这个位置时,在用equals比较数据是否相等,相等就重复了,不相等就进行存储
若是两个对象相等,那么它hashCode值必定相等,反之则不必定,还须要equals比较
Map的数据是以键值对(k-v)形式存储的
k-v以Entry类型的对象实例存在
可用经过key快速查找到value的值
一个映射不能包含重复的键,k不能重复,v能够重复
每一个键最多只能映射到一个值
基于哈希表的Map接口实现
容许使用null键和null值,但null键只能有一个
key值不容许重复
HashMap的Entry对象是无序排列的