什么是集合?
集合里的东西称为元素,由一个或多个元素构成的整体叫集合。
iterable接口
它是所有集合的顶低接口 实现它可以增强for循环
同时想要实现Iterable接口的集合类必须提供一个iterable的方法,返回值为Iterable
里面的方法为:hasNext():是否存在下一项
next():获取下一项
remove:移除下一项
Collection接口
1.属于java.util包里面的
2.集合框架的顶级框架
3.是Set和List的父接口 不是map的
里面的方法:
size:返回集合中的项数
isEmpty():判断集合中是否为空
contains(Object):判断集合是否包含某项
clear():
add():从集合中添加
remove(Object):移除某项
iterator():遍历集合
注:Collection里面的集合和remove(Object)和Iterable中的remove比较起来,Iterable的remove性能更加好点,同时容错方面也比Collection里面的要好
collection是单链表结构 从集合一个一个找 才能找到需要remove的 慢
Iterable的remove结合next方法使用 没指定 隔一个删一个 快
List接口
1.特点:对象重复有序 有顺序 先进先出
2.List又分为ArrayList和LinkedList和Vector。
ArrayList:查询速度最快,以连续的空间存储数据。查询的一般都是集合 它查询快所以用arraylist
LinkedList:增删改速度快,以链表的结构存储数据。比如session购物车的添加和删除用它
3.相对于ArrayList,Vector线程是安全的,也就是说是同步的,而ArrayList是异步的
4.如果想在遍历List时删除其中一个元素,可以使用迭代器
Set接口
1.特点:不重复 对象无序
2.set中分为HashSet和TreeSet以及LinkedHashSet
HashSet:速度最快,无序,可以放入null,但是只能放一个
TreeSet:按照升序保存对象 排序 不重复
LinkedHashSet:顺序怎么进怎么出
Queue接口:
1.特点:先进先出
2.Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用
element()或者peek()方法。
值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
Map集合
map特点像List和set集合
1.特点:无序,以键值对的形式添加元素,键不能重复,值可以重复。
2.hasmap:速度快 无序 键值对存储
Treemap:升序保存键 排序功能
Linkedhasmap 按照插入顺序存储
2.遍历:
2.1:先取出保存所有键的Set,在遍历Set。
2.2:先取出保存所有Entry的set,在遍历set。
Arrays
数组转list
Arrays.aslist(数组)
list转数组
list.toArray()
Array与ArrayList有什么区别?
1.Arraylist是Array的复杂版本
存储数据类型:2.Array只能存储相同类型数据 Arraylist可存储不同类型数据
长度可变:3.Array长度固定 Arraylist长度可变
Hashmap和hashset区别?
hashmap是实现map接口 存储键值对 put添加 相当于hashset快 使用唯一键获取对象
hashset实现set接口 存储对象 add添加 相当于hashmap较慢
List和set和map区别?
1.List和Set都继承collection 但map不是它的子接口
list:重复有序 可插入多个null元素 先进先出
set:不重复 无序 只允许一个null元素
map:键值对存储 键不重复值重复 无序 允许一个空键 多个空值