java集合框架梳理

什么是集合?

集合里的东西称为元素,由一个或多个元素构成的整体叫集合。

java集合框架梳理

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:键值对存储 键不重复值重复 无序 允许一个空键 多个空值