Collection下级接口集合以及Map详解与区别
简介
集合里的东西称为元素,由一个或多个元素构成的整体叫集合。
先看下图:
由图可知:
iterator是collection的顶级接口
collection是list ,set的顶级接口,map与list set 没有关系
上图引出以下问题:
iterable接口
它是所有集合的顶级接口 实现它可以增强for循环(foreach 与简单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接口
特点:可有重复元素,有顺序
ArrayList与linkedlist,vector都继承于list ,主要区别:
1.ArrayList查询快 ,以连续的空间存储数据,一般我们查询都是用的ArrayList
2.linkedlist查询慢,以链表的接口存储数据,一般session购物车用linkedlist删除修改
3.ArrayList与vector ,ArrayList是异步的 线程不安全,vector是同步线程安全
Set接口
特点:不可重复,对象无序
hashset,treeset,linkedhashset三者区别
1.hashset :速度快 ,无序,有且仅有一个null值
2.treeset:按照升序保存对象,不可重复
3.linkedhashset:怎么进怎么出
Queue接口:
1.特点:先进先出
所谓消息队列有四个关键字:queue,message,looper,handler
message:消息
lopper:是用来封装消息循环和消息队列的一个类(一个线程只能有一个Looper,对应一个MessageQueue。 )
handler:是一个工具类,用来向消息队列中插入消息的
下图解释:
Map集合
特点:无序,以键值对的形式添加元素,键不能重复,值可以重复。键只允许有一个null值,但是值可以有多个
hashmap与Treemap,Linkedhashmap区别:
1.在map中插入,删除hashmap是最好的选择
2.需要有集合的排序功能用treemap
3.按照插入的顺序存储集合用linkedlist
遍历:
先取出保存所有键的Set,在遍历Set。
先取出保存所有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添加 相当于hashmap快 使用唯一键获取对象
hashset实现set接口 存储对象 add添加 相当于hashmap较慢
List和set和map区别?
1.List和Set都继承collection 但map不是它的子接口
list:重复有序 可插入多个null元素 先进先出
set:不重复 无序 只允许一个null元素
map:键值对存储 键不重复值重复 无序 允许一个空键 多个空值