导图社区 Java-集、合浅谈
Java集合
set
Hashset
底层数据结构是哈希表,哈希表依赖两个方法hashcode()和equals()方法
hashcode()和equals()方法的执行顺序
先判断hashcode()值是否相同
相同
继续执行equals()方法看返回值
true
说明元素重复,不添加
false
直接添加元素
不同
直接添加到集合
Treeset
底层数据结构是二叉树
list
ArrayList
底层数据结构是动态数组,查询快O(1),增删慢O(n)
原理:基于顺序的存储结构,内存空间是连续的,支持高效的随机访问数据
线程不安全,效率高
LinkedList
底层数据结构是双向链表,查询慢,增删快
原理:查询时按序号索引数据进行前向或后向遍历,查询效率低; 插入时只需记录本项的前后项即可,插入效率高。
线程不安全,效率高
Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低
map Map中的集合是成对存在的, 两个泛型变量<key,value>, 不包含重复的键,只可以重复。 每个键只能对应一个值 一般key为String类型,value为Object类型;
HashMap<K,V>
底层数据结构为哈希表结构,元素的存取顺序不能保证一致。 由于要保证键的唯一,需要重写键的hashcode()、equals()方法
LinkedHashMap<K,V>
底层数据结构为哈希表结构+链表结构。 通过链表结构可以保证元素的存取顺序一致, 通过哈希表结构可以保证键的唯一性 需要重写键的hashcode()、equals()方法
属HashMap<K,V>的子类
TreeMap
可用来对Map集合中的键进行排序。
map集合中遍历键找值的方式?
1、获取map集合中所有的键,由于键唯一,所以返回一个set集合存储所有的键
2、遍历键的set集合,得到每一个键
3、根据键,获取键所对应的值
map集合遍历键值对对象方式?
1、获取Map集合中,所有的键值对对象,以set集合形式返回
2、遍历包含键值对对象的set集合,得到每一个键值对对象
3、通过键值对对象,获取entry对象中的键与值
注:map集合不能直接使用迭代器或foreach进行遍历。但可以转成set
map中的方法
get():获取指定键所对应的值
put():将指定的值与此映射中的指定键关联
remove():根据指定的键深处元素,返回被删除的元素的值
集合就是一个放数据的容器,准确的说是放数据对象引用的容器。集合存放的都是对象的引用,而非对象本身。所以,我们称集合中的对象就是集合中对象的引用。