一、什么是集合
java集合类存放于java.until包下,是用来存放数据的一种容器。
二、集合与数组的区别
1.数组长度不可变,集合的长度可变;
2.数组可以存放基本数据类型,也可以是引用数据类型,而集合只可以存放引用数据类型;
3.数组只可以存放同一种类型;而集合可以存放不同类型的数据。
三、collection的方法
四、常用集合的分类
五、List和Set的区别
1.List是有序的,Set是无序的;
2.List可以重复,Set元素唯一;
3.List可以通过过索引直接获取元素,Set不可以,set需要利用迭代器获取元素
4.List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变;
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
六、List
1.list的方法:
在指定位置添加元素:void add(String item, int index);
在指定位置删除元素:void remove(int position);
2.分类:
a.ArrayList:底层数据结构是数组,查询快,增删慢;线程不安全,效率高 ——(常用)
b.LinkList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高
c.Vector:底层数据结构是数组,查询快,增删满,线程安全,效率低。
3.ArrayList与LinkList的比较:
a.ArrayList是基于数组实现,linklist是基于链表实现的;
b.ArrayList查询快,增删慢;LinkList查询慢,增删快
七、Set
1.HashSet:
底层数据结构用哈希表实现,元素存取无序,需要使用迭代器,数据唯一。线程不安全,效率高,可以存放null值,但是只能存放一个。元素的排列也是无序的。
元素的唯一性是通过重写hashCode()和equals()方法来保证
2.LinkedHashSet
底层数据结构是哈希表和链表,有序且唯一
通过哈希表保证了唯一;通过链表保证了有序
3.TreeSet
底层数据结构是红黑树,存取无序,依赖迭代器,数据唯一。线程非安全。
TreeSet元素排序是有序的 (符号 > 数字(0-9)> 字母(a-z) > 汉字)。
注:TreeSet自然排序通过CompareTo(Object obj)方法实现, 如果需要定制排序的话,应该使用Comparator接口,实现 int compare(To1,To2)方法
八、Map
Map是由键值对组成的集合,提供了从key到value的映射。map中一个key对应一个value,所以key值不可以相同,value可以相同。
1.HashMap
hashmap是最常用的map,它根据HashCode值存放数据可以根据键直接获取他的值,具有很快的访问速度。
hashmap在遍历的时候,取得的数据的顺序是完全随机的
因为键对象不可重复hashmap最多只允许一条记录的键为null,允许多条记录的值为null
网友评论