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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 泛型与集合框架 -> 正文阅读

[数据结构与算法]泛型与集合框架

泛型

? ??(1)泛型目的:建立有类型安全的集合框架,如链表,散列映射等
? ??(2)泛型声明:使用“class名称<泛型列表>”声明一个类,这样声明的类称为泛型类,如: class Peope<E>
? ??(Peole是泛型类的名称,E是其中的泛型)
? ??(3)泛型类声明对象:泛型类声明和创建对象时,类名后多了一对“<>”,而且必须
要用具体的类型替换"<>”中的泛型,如:
? ??Cone<?Circle?> coneOne ;
? ??coneOne=?new?Cone<Circle >(new? Circle ());
? ??(4)泛型优点:泛型的目的是建立具有类型安全的数据结构,如链表.散列表等数据结构,最重要的一个优点:在使用这些泛型类建立的数据结构时,不必进行强制类型转换,即不要求进行运行时类型检查


链表

? ??(1)链表:LinkedList<E>泛型类创建的对象以链表结构存储数据,链表是由若干个称做结点的对象组成的一种数据结构,每个结点含有一个数据以上一个结点的引用和下一个结点的引用。
? ??创建一个空双链表:?LinkedList<String> mylist=new?LinkedList<String>();

? ?注:ArrayList即顺序结构的动态数组表,采用顺序结构存储数据。而ArrayList与LinkedList类似,二者区别在一个使用顺序结构,一个使用链式结构。数组表不适合动态地改变它存储的数据,如增加,删除单元等(比链表慢),但由于数组采用顺序结构存储教据,数组表获得第n个单元数据比链表获得第n个单元数据的速度快。
? ??(2)collections类提供的顺序与查找类方法:
? ??public?static?sort (List<E>?list)该方法可以将list中的元素按升序排列.
? ? int binarySearch?(List<T>?list,?T key,?CompareTo<T>c)使用折半法查找list是否含有和参数key相等的元素,如果key与链表中某个元素相等,方法返回和key相等的元素在链表中索引位置(链表的索引位置从0开始).否则返回-1?


堆栈

? ??(1) Stack<E>泛型类创建一个堆栈对象,堆栈把第一个放入该堆栈的数据放在最底下,而把后续放入的数据放在已有数据的顶上,堆栈总是在顶端进行数据的输入输出操作。故堆栈是一种"后进先出"的数据结构,只能在一端进行输入或输出数据的操作
? ??(2) 向堆栈输入数据(压栈):public E?push?(E?item);
? ??向堆栈输出数据(弹栈):?public E?pop():
? ??判断堆栈是否有数据,有返回false,无返回ture: public E peek();


散列映射

? ??(1)HashMap<K,V>泛型类创建散列映射,散列映射采用散列表结构存储数据,用于存储键/值数据对,允许把任何数量的键/值数据对存储在一起。使用散列映射来存储经常需要检索的数据,可以减少检索的开销。
? ??(2) 常用方法:

  • ? ??public void?clear(): 清空散列映射
  • ? ??public?Object clone(): 返回当前散列映的一个克隆;
  • ? ??public boolean?containsKey(Object?key): 如果散列映射有键/值对使用了参数指定的键,方法返回true,否则返回flse.
  • ? ??public boolean?containsValue(Object?value): 如果散列映射有键/值对的值是参数指定的值,方法返回true,否则返回false.
  • ? ??public?V?get(Object?key): 返回散列映射中使用key做键的键/值对中的值。
  • ? ??public?boolean?isEmpty(): 如果散列映射不含任何、键/值对,方法返回true,?否则返回false。
  • ? ??public?V?remove(Object?key): 刪除散列映射中键为参数指定的键值对,并返回键对应的值
  • ? ??public?int?size(): 返回散列映射的大小,即散列映射中键/值对的数目

? ??(3)遍历散列映射:?public Collection<V>?values()方法,返回一个实现 Collection<V>接口类创建的对象.可以使用接口回调技术,即将该对象的引用赋值给Collection<V>接口变量,该接口变量可以回调iterator()方法获取一个Iterator对象,这个iterator对象存放散列映射中所有键/值对中的值


树集

? ? ?TreeSet<E>类创建树集,树集结点的排列和链表不同,不按添加的先后顺序接列,当一个树集中的数据是实现Comparable接口类创建的对象时,结点就按对象的大小关系升序排列。树集用add方法添加结点,结点会按其存放的数据的”大小”顺序一层一层地依次排序,在同一层中的结点从左到右按”大小”顺序递增排列,下一层都比上一层小


数映射

? ? ?TreeMap<K,V>类创建树映射,?树映射的结点存储键/值对,和树集不同的是,树映射保证结点是按照结点中的键升序排列。?TreeMap<K,V>类实现了Map<K,V>接口,称TreeMap<K,V>对象为树映射。树映射使用public V put(K keg,V?value)方法添加结点,该结点不仅存储数据value,也存储和其关联的关键字keg,也就是说树映射结点存储关键字/值对。

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

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