java基础List、Set、Map
来源:互联网 发布:中国新歌声网络直播权 编辑:程序博客网 时间:2024/04/25 20:20
List、Set继承Collection接口,Map不继承
List其元素有放入顺序,元素可重复;Set其元素无放入顺序,元素不可重复,重复元素会覆盖掉;
(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法 ,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)
Set和List的区别
List:和数组类似,可动态改变大小,检索效率高,插入删除效率低,因为会改变元素位置
Set:检索效率低,插入删除效率高,插入和删除不会引起元素位置改变
Map:存储键值对数据(k-v)
List实现类:ArrayList、Vector、LinkedList
ArrayList:数组方式存储数据,插入删除元素慢,检索元素快,线程不安全的
Vector:数组方式存储数据,插入删除元素慢,检索元素快,线程安全的
LinkedList:双向链表方式存储数据,插入删除元素快,检索元素慢,线程不安全的
Set:HshSet、LinkedHashSet、TreeSet
HashSet:为快速查找设计的Set,存入HashSet的对象必须定义HashCode()
TreeSet:保存顺序的Set,底层为树结构,使用它可以从Set中提取有序数据
LinkedHashSet:具有HashSet快速查找的特点,且内部使用链表来维护元素的顺序(插入顺序)。于是在使用迭代器遍历Set时,结果按元素的插入次序展示
Map:HashMap、HashTable、TreeMap、WeakHashMap
HashMap:基于散列表实现,允许空键空值,线程不安全;LinkedHashMap:类似HashMap,遍历时获取的键值对顺序是其插入次序
HashTable:基于散列表实现,不允许空键空值,线程安全
TreeMap:基于红黑树数据结构实现,不允许空键空值,线程不安全;查看键或键值对时,他们会被排序
WeakHashMap:是改进版的HashMap,对“key”实行弱引用,如果一个key不再被外部引用,该key会被GC回收
hashmap的工作原理
HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获取对象。当我们给put()方法传递键和值时,我们先对键调用hashCode()方法,返回的hashCode用于找到bucket位置来储存Entry对象。”这里关键点在于指出,HashMap是在bucket中储存键对象和值对象,作为Map.Entry。这一点有助于理解获取对象的逻辑。如果你没有意识到这一点,或者错误的认为仅仅只在bucket中存储值的话,你将不会回答如何从HashMap中获取对象的逻辑。这个答案相当的正确,也显示出面试者确实知道hashing以及HashMap的工作原理。
- java基础List、Set、Map
- Java集合List,Set,Map基础
- java基础--Set, List和Map简介
- [Java基础] List、Set、Map区别
- Java集合List,Set,Map基础
- java基础:集合类型set,list,map
- JAVA---List,Map,Set
- java:List、set、map
- JAVA --set list map
- 【Java基础】--Java容器剖析:Set、List、Map接口
- 【Java基础】 Java集合框架List,Map,Set
- 集合基础 :List;Set;Map
- JAVA基础——List、Set和Map大讨论
- Java基础——集合List+Set+泛型+Map
- java基础——集合框架(List、Set、Map)
- java基础之集合List、Set、Map的区别
- java基础-StringBuild、StringBuffer及List、Map、Set
- java基础--Set、List和Map的区别
- UE4中实现物体缩放贴图大小保持不变的思路
- ShowTipsView实现教学指引效果
- 平台软件每日构建总结
- Axis2的OMElement问题
- 带标记的ImageView,图片可以设置成圆角
- java基础List、Set、Map
- 基于WheelView自定义的DatePickerDialog
- 基于上一篇写的UserBirthdayDialog
- 541. Reverse String II
- 实现一个快速简单的SimpleListDialog<T>
- Cookie和HttpSession
- 自定义Tablayout的布局
- 基于上一篇实现的SimpleListPopupWindow<T>
- 移动端常见的一些兼容性问题