IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> java集合总结 -> 正文阅读

[数据结构与算法]java集合总结

java集合

集合

集合体系包括Collection 和 Map 两种体系
在这里插入图片描述

Collection

List Set Queue实现Colletion接口

List 有序,可重复

ArrayList

构造一个初始容量为 10 的空列表

优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高
Vector
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低
LinkedList 构造一个空列表。
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高

Set 无序,唯一

HashSet

使用默认初始容量 (16) 和负载因子 (0.75) 构造一个新的空链接散列集底层数据结构是哈希表。(无序,唯一)
如何来保证元素唯一性?
1.依赖两个方法:hashCode()和equals()

LinkedHashSet

使用默认初始容量 (16) 和负载因子 (0.75) 构造一个新的空链接散列集
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一

TreeSet

构造一个新的空树集,根据其元素的自然顺序排序。底层数据结构是红黑树。(唯一,有序)

队列queue的实现
java中虽然有Queue接口,单java并没有给出具体的队列实现类,而Java中让LinkedList类实现了Queue接口,所以使用队列的时候,一般采用LinkedList。因为LinkedList是双向链表,可以很方便的实现队列的所有功能。

Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用element()或者peek()方法。

java中定义队列 一般这样定义: Queue queue = new LinkedList();

Queue <Integer> queue = new LinkedList <Integer>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
System.out.println(queue);
System.out.println(queue.peek());
queue.poll();
System.out.println(queue);
List子类常用方法

ArrayList的常用方法

增add()
删 remove()
改set()
查 contains()
查 indexOf()
返回第一次找到的索引 get()
计算长度size()
删除所有clear()
是否为空isEmpty()
按条件删除removeif()
遍历forEach()
排序sort()
// 使用增强for循环进行遍历

  for (Object value : list) { 
          System.out.println(value);  
       }

LinkedList的方法

增add()
删 remove()
改set()
查 contains()
查 indexOf()
返回第一次找到的索引 get()
计算长度size()
删除所有clear()
是否为空isEmpty()
按条件删除removeif()
遍历forEach()
// 使用增强for循环进行遍历
for (Object value : list) { System.out.println(value); }

Set子类常用方法

hashSet

增add()
删 remove()
改 没有
查 contains()
查 indexOf()
返回第一次找到的索引 get()
计算长度size()
删除所有clear()
是否为空isEmpty()
按条件删除removeif()
遍历forEach()
// 使用增强for循环进行遍历

  for (Object value : list) {         
  System.out.println(value);      }

LinkHashSet方法

增add()
删 remove()
改 没有
查 contains()
查 indexOf()
返回第一次找到的索引 get()
计算长度size()
删除所有clear()
是否为空isEmpty()
按条件删除removeif()
遍历forEach()
// 使用增强for循环进行遍历

  for (Object value : list) {         
  System.out.println(value);      }

TreeSet方法

增add()
删 remove()
改 没有
查 contains()
查 indexOf()
返回第一次找到的索引 get()
计算长度size()
删除所有clear()
是否为空isEmpty()
按条件删除removeif()
遍历forEach()
// 使用增强for循环进行遍历

for (Object value : list) {         
System.out.println(value);      }
Map

HashMap、TreeMap和HashTable实现Map接口

HashMap

构造一个HashMap具有默认初始容量 (16) 和默认负载因子 (0.75)的空

基于哈希表的Map接口实现。此实现提供所有可选的映射操作,**并允许 null值和null**键。(HashMap 该类大致相当于Hashtable,除了它是非同步的并允许空值。)该类不保证映射的顺序;特别是,它不保证订单会随着时间的推移保持不变。

此实现为基本操作(getput)提供恒定时间性能,假设散列函数在存储桶中正确分散元素。集合视图上的迭代需要的时间与HashMap实例的“容量” (桶的数量)加上它的大小(键值映射的数量)成正比 。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低),这一点非常重要。

? LinkedHashMap

? LinkedHashMap是hashMap的子类LinkedHashMap使用**默认初始容量 (16) 和 加载因子 (0.75)**构造一个空的插入排序实例。

? 接口的哈希表和链表实现Map,具有可预测的迭代顺序。此实现的不同之处 HashMap在于它维护一个贯穿其所有条目的双向链表。这个链表定义了迭代顺序,通 常是将键插入到映射中的顺序插入顺序)。请注意,如果将键重新插入到映射中,则 插入顺序不会受到影响。

HashTree

**使用其键的自然顺序构造一个新的空树映射。**键非空值可空

基于红黑树的实现。根据其键的[自然顺序进行排序或者根据创建时提供的[顺序进行排序]具体取决于使用的构造函数。

此实现提供了保证的log(n)的时间成本,为 containsKeygetputremove 操作。算法是对 Cormen、Leiserson 和 Rivest 的算法简介中的算法的改编。
HashTable

构造一个具有默认初始容量 (11) 和负载因子 (0.75) 的新的空哈希表。
这个类实现了一个哈希表,它将键映射到值。任何非null对象都可以用作键或值。
要从哈希表中成功存储和检索对象,用作键的对象必须实现hashCode 方法和equals方法。
的实例Hashtable有两个影响其性能的参数:初始容量负载因子。的 容量是多少在哈希表,和 初始容量是简单地在创建哈希表中的时间的能力。请注意,哈希表是开放的:在“哈希冲突”的情况下,单个存储桶存储多个条目,必须按顺序搜索。该客座率是衡量哈希表在其容量自动增加之前允许达到多满的指标。初始容量和负载因子参数只是对实现的提示。关于何时以及是否调用 rehash 方法的确切细节取决于实现。

通常,默认负载因子 (.75) 在时间和空间成本之间提供了良好的折衷。较高的值会减少空间开销,但会增加查找条目的时间成本(这反映在大多数 Hashtable操作中,包括getput)。

Map子类常用方法

HashMap方法

增**[put([K] key, [V] value)
删remove(Object key)
改 没 但可以添加key相同,但value不同的值,来实现改value
查 value() keySet() containsKey(key) containsValue(value) entrySet()返回key-value
长度 size()
// 遍历

for (Object entry:hashMap.entrySet()){
			System.out.println(entry);
		}

treeMap方法

增**put(K key, [V]value)
删remove(Object key)
改 没 但可以添加key相同,但value不同的值,来实现改value
查 value() keySet() containsKey(key) containsValue(value) entrySet()返回key-value
长度 size()
// 遍历

for (Object entry:hashMap.entrySet()){ 
           System.out.println(entry);        }

Map子类间的比较
在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 15:59:20  更:2021-08-06 15:59:26 
 
开发: 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/25 19:33:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码