| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 1.4 Java集合 -> 正文阅读 |
|
[Java知识库]1.4 Java集合 |
集合* 什么是集合? ? ? ? ? 集合就是以特定结构存放一组数据的容器,就叫做集合 * 它有什么优点? ? ? ? ? 每种规则都有各自的优点,例如ArrayList就解决了数组长度规定的问题 常用的集合和相关类Collection ? ? ? ? |- List ? ? ? ? ? ? ? ? |- LinkedList ? ? ? ? ? ? ? ? |- ArrayList ? ? ? ? |- Set ? ? ? ? ? ? ? ? |- HashSet ????????? ? ? ? |- TreeSet Map ? ? ? ? |- HashMap ? ? ? ? |- TreeMap Collections 工具类 Iterator 遍历器 LinkedList
什么是双链表结构将一个数据封装在一个节点对象,这个对象还有两个属性,上一个节点属性和下一个节点属性。第一个节点的前一个节点是最后一个节点,同理,最后一个节点的下一个节点是第一个节点。 如何使用LinkedListLinkedList<String> linkedList = new LinkedList<>(); 它的一些方法
关于Iterator的使用* 遍历方式 ? ? ? ? 它有一个下标,当你刚获得它的时候,下标指向第一个的前一个,也就是一个空的位置,此时使用hasNext()会去判断下一个是否有数据(有返回true,无返回false)然后使用next()将下一个数据取出来,此时下标也会自动向后移动一位。 遍历的时候只需要不断的重复这个步骤即可
* 步骤 ? ? ? ? 1. 首先获取到遍历器 Iterator<String> iter = linkedList.iterator(); ? ? ? ? 2. 判断遍历器中是否有下一个数据? iter.hasNext();? ? ? ? ? 3. 取出下一个数据并将下标向后移动 iter.next(); ? ? ? ? 4. 在使用遍历器时,无法使用linedList对象去移除数据,如果想删除数据必须用 iter.remove() 会移除刚刚使用next()方法取出的数据 ArrayList* 它是什么? ? ? ? ? 它是一个可变长度的数组,内部封装了一个数组,当存放的内容过多时,会新建一个1.5倍长的数组,并把之前的数据复制进去。 ? ? ? ? 这个数组的初始长度默认是10,也可以在创建对象时指定 * 它的特点是? ? ? ? ? 它的访问效率非常高。 但是增加和删除的效率会很低,如果你删除了中间的一个数据,那么后面的所有数据都要向前移动一位 * 如何使用它? ? ? ? ? ArrayList<String> arr = new ArrayList<>(); ? ? ? ? ArrayList<String> arr = new ArrayList<>(15);? ? ? ? 指定数组默认长度 * 它有哪些方法? ? ? ? ? 它的方法和LinkedList一致,除去收尾操作的方法(First,Last) Foreach
HashMap* 它是什么 ? ? ? ? 它叫做哈希表,也叫做散列表。 * 它的存储原理是什么?
* 如果这个位置已经有数据了怎么办? ? ? ? ? 对比他们的Key是否一致 ????????????????如果Key一致就会使用新的数据替换掉旧的 ????????? ? ? ? 如果Key不一致,他们则会放在一起(使用双链表结构挤在一起) * 但是使用双链表不会影响效率吗? ? ? ? ? 会的,所以当存储的数据数量大于数组的70%时会将数组扩大。 ? ? ? ? 在JDK1.8后,当一个位置的数据大于8个时,就会将数据从双链表结构转为红黑树来提高效率 * 所以它的特点是 ? ? ? ? 它的存储,查询,修改 几乎都是很快的。因为它不需要进行什么遍历,唯一耗时的就是计算Key的Hash值以及计算下标值. 如何使用HashMap
Collections 工具类addAll(集合,数据1,数据2,数据3,...,数据n);? ? ? ? ? ? ? ? 一次性添加多个数据到集合(只能用于List) sort(集合);? ? ? ? ? ? ? ? 排序,只能用于List sort(集合,Comparator); 排序,使用自定义排序器
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 20:31:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |