| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 数据结构与算法 -> day_18 集合、list、链表、比较器 -> 正文阅读 |
|
|
[数据结构与算法]day_18 集合、list、链表、比较器 |
1. Collection1.1概述java集合是使程序能够存储和操纵元素不固定的一组数据.所有java集合类都位于java.util包中. 问:之前我们需要把多个元素放到一起的时候,使用的是数组.那么为何还要提供java集合工具呢? 我们通过对比数组和hjava集合工具来解释java集合工具的必要性:
1.2继承体系
?由上图我们可以看出java集合类由清晰的继承关系,有很多子接口和实现类.但是,并不是所有子接口或实现类都是最常用的. 下面我们列举处最常用的集合子接口和实现类:
1.3常用方法
1.4使用方式
1.5注意Contains和removeContains(数据):判断集合中国是否包含某个元素 Remove(数据):删除指定元素 两个方法底层都会自动调用该对象的equals方法 因为不管是判断是否包含还是删除,都要先找到这个数据,而找到只能比较但是集合中国保存的都是引用类型,所以比较只能使用equalsfangfa 所以如果存储的是自定义类型,就要考虑equals方法的覆写问题 2.Iterator2.1概述
[for与iterator对比]·Iterator的好处在于可以使用相同方式去遍历集合中元素,而不用考虑集合类的内部实现 ·使用Iterator来遍历集合中元素,如果不再使用List转而使用Set来组织数据,则遍历元素的代码不用做任何修改 ·使用for来遍历,那所有遍历此集合的算法都得做相应调整,因为List有序,Set无序,结构不同,他们的访问算法也不一样 ·for循环需要下标 2.2常用方法
2.3使用方式
3.List3.1概述
3.2ArrayList
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 方法 | 描述 |
| void addFirst(Object e) | 将指定元素插入该集合的开头 |
| void addLast(Object e) | 将指定元素插入该集合结尾 |
| boolean offerFirst(Object e) | 将指定元素插入该集合的开头,成功返回true |
| Boolean offerLast(Object e) | 将指定元素插入该集合结尾 |
| Boolean offer(Object e) | 将指定元素插入该集合结尾 |
| Object getFirst() | 获取,但不删除集合第一个元素 |
| Object getLast() | 获取,但不删除集合最右一个元素 |
| Object peekFirst() | 获取,但不删除该集合第一个元素,如果集合为空,则返回null |
| Object peekLast() | 获取,但不删除该集合最后一个元素,如果集合为空,则返回null |
| Object pollFirst() | 获取,并删除该集合第一个元素,如果集合为空,则返回null |
| Object pollLast() | 获取,并删除该集合最后一个元素,如果集合为空,则返回null |
| Object removeFirst() | 获取,并删除该集合的第一个元素 |
| Object removeLast() | 获取,并删除该集合的最后一个元素 |
| Object pop() | pop出该集合的第一个元素 |
| void push(Object e) | 将一个元素push到集合 |
LinkedList list = new LinkedList();
// add(E e ) : 尾部添加
// add(int index , E e ) : 添加到指定位置
// set(int index, E e ) : 更改指定位置上的元素值
// remove(Object object) : 根据元素内容删除
// remove(int index) : 根据索引删除
// get(int index) : 获取指定位置的数据
// 首部添加
list.addFirst(1);
// 首部添加
list.push(11);
// 首部添加 成功返回true
list.offerFirst(111);
// 尾部添加
list.addLast(2);
// 尾部添加 成功返回true
list.offerLast(22);
// 尾部添加 成功返回true
list.offer(222);
// 上面这几个方法 没啥区别,本质就是 linkLast 和 linkFirst
list.add(1);
list.add(2);
list.add(3);
list.add(0, 4);
list.set(3, 33);
System.out.println(list.get(2));
// 这是根据索引删除
list.remove(1);
// 删除元素值为1
list.remove(new Integer(1));
System.out.println(list);
// 传统for遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
// foreach遍历
for (Object object : list) {
System.out.println(object);
}
// 迭代器遍历
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
?


* 链表 : 保存的都是节点,一个节点有三个属性 , 添加的数据 , 上一个节点引用, 下一个节点引用



?

?

?获取数据
?
?
Get方法 只是模拟了下标获取数据的方式,本质就是遍历,从头挨个去找,所以这可以理解为 并不是下标,只是决定了循环次数,而 ArrayList的get才是根据下标获取


?
?
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/21 5:33:41- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |