集合简单的来说是一个容器,是一个存数据,长度可变的。
与数组的区别是:数组可以是基本类型,也可以是引用类型。
集合只能是引用类型。
数组只能存储同一种类型。
集合可以存储不用类型。
常用的集合有:List,Set,Map。
List集合:是一个有序的(存储有序)无索引 可以存重复的数据的
add(索引,元素) get(独有的) remove(索引,变量) clear(索引,变量)
ArrayList:底层数据结构是:数组
特点是:查找快,增删慢。 线程不安全,但效率高
LinkedList:底层数据结构是:链表
特点是: 增删快,查找慢。 线程不安全,但效率高。
Set集合:是一个不能重复的 没有索引的 存储无序的集合
TreeSet:
底层数据结构是:采用二叉树来实现,元素唯一且已经排好序,唯一性同样需要重写hashCode.
根据构造方法分为:自然排序,比较器排序。
HashSet:
底层数据结构是:采用哈希表实现
特点:元素不能重复且元素无序且唯一,线程不安全,效率高,可以存储null元素。注意(元素的唯一性,是靠重写所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写,则无法保证元素的唯一性。)
LinkHashSet:底层数据结构是:采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一至,哈希表保证了元素的唯一性,但线程不安全,效率高。
注:Set存入Set的每个元素都必须是唯一的,因为Set不保存重复的元素。
Map用于保存具有映射关系的数据库,是一个双列集合,存储两个数据,一个是键,一个是值,其键是不能重复的,值是可以重复的。它是一个接口,也是一个内部类(Entry)。
使用Map: put 赋值 提示:键是唯一的 存入成功,null ; 被占用的键所指向的值。
get(object Key) 是取值获取单个键 提示:获取单个键,返回值是数据类型。
keySet(): 提示:获取所有的键,返回值是数据类型 Set<K>
Set<<Map,Entry><K,V>>EntrySet() 提示:Map.Entry : 是键值对的关系,管理键值对关系,键找到值(映射关系)。
知识补充:关于迭代器,增强for,通配符,泛型,可变参等小知识。以图片形式出现。