首页 / JAVA / Java知识总结--集合篇
Java知识总结--集合篇
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java知识总结--集合篇,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4009字,纯文字阅读大概需要6分钟。
内容图文
![Java知识总结--集合篇](/upload/InfoBanner/zyjiaocheng/629/24283589965944438c69edfc7fcc1cb3.jpg)
集合(List,Set,Map)
目录
1.13- Iterator 和 ListIterator 的区别
1.1-List
List下有ArrayList,Vector,LinkedList,List是有序的可以重复的
1:ArrayList
- 底层使用的是数组,所以查询特定的元素特别快,插入删除慢,线程不安全
- 初始化容量:10
2:Vector
- 底层使用的是数组,线程安全的
- 初始化容量:10
3:LinkedList
- 底层使用的是链表,所以插入和删除特别快,查询慢
1.2-Set
无序的,不可以重复的,根据equals和hashCode判断,就是如果一个对象要 存储在set中,必须重写equals和hashCode方法
1:HashSet
- 底层是HashMap
- 向HashSet添加元素就是把元素作为键添加到底层的HashMap中
2:TreeSet
- TreeSet实现了SortedSet接口,可以根据元素自然排序,要求集合中的元素必须是可比较的(Comparator与Comparable)
- TreeSet底层是TreeMap
- 向TreeSet添加元素就是把元素作为键添加到底层的TreeMap中
1.3-Map
Map
是按key-value对的形式存储数据,Map
的key
不允许重复
1:HashMap
- 底层是数组+链表,键与值都可以为null,线程不安全
2:CurrentHashMap(jdk1.5后推出的)
3:HashTable
- 底层数组+链表,无论key还是value都不能为null,线程安全,效率低
1.4-HashMap遍历怎么遍历?
两种方式遍历:使用EntrySet
遍历;使用KeySet
遍历
1.5-HashMap使用场景
比如说读取参数,在服务之间传递一些键值对时使用。
下面内容借鉴于:https://blog.csdn.net/qq_41701956/article/details/103253168
1.6- HashMap 还是 TreeMap选择
对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。
1.7-HashMap 的实现原理
HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
当我们往Hashmap中put元素时,首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放入链尾.如果数组中该位置没有元素,就直接将该元素放到数组的该位置上。
需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn)
1.8-HashSet 的实现原理
-
HashSet底层由HashMap实现
-
HashSet的值存放于HashMap的key上
-
HashMap的value统一为PRESENT
1.9-实现数组和 List 之间的转换
- List转换成为数组:调用ArrayList的toArray方法。
- 数组转换成为List:调用Arrays的asList方法。
1.10-Array 和 ArrayList 的区别
-
Array可以容纳基本类型和对象,而ArrayList只能容纳对象。
-
Array是指定大小的,而ArrayList大小是固定的。
-
Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。
1.11-迭代器 Iterator
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
1.12-Iterator的使用和特点
Java中的Iterator功能比较简单,并且只能单向移动:
-
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
-
(2) 使用next()获得序列中的下一个元素。
-
(3) 使用hasNext()检查序列中是否还有元素。
-
(4) 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
1.13- Iterator 和 ListIterator 的区别
- Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。
- Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
- ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等。
//持续更新。。。。。。
内容总结
以上是互联网集市为您收集整理的Java知识总结--集合篇全部内容,希望文章能够帮你解决Java知识总结--集合篇所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。