2022年实用数据结构辅导知识点 .pdf
《2022年实用数据结构辅导知识点 .pdf》由会员分享,可在线阅读,更多相关《2022年实用数据结构辅导知识点 .pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1 数组, Arrays类学习目标:1. 掌握关于数组概念2. 掌握 Arrays类以及常用方法1.回忆数组概念、定义及使用 ;2.掌握 Arrays 类常用方法3.继承关系: Arrays类是 Object类直接子类。如下图所示:Arrays类常用方法 : sort()对指定的类型数组按数字升序进行排序。binarySearch()使用二分搜索法来搜索指定的类型数组,以获得指定的值。equals()用于比较两个数组是否相等。fill() 用以某个值填充整个数组。asList()接受任意的数组为参数,将其转变为 List 容器。Java 的二分查找算法: private static int
2、 binarySearch0(Object a, int fromIndex, int toIndex, Object key) int low = fromIndex; int high = toIndex - 1; while (low = high) int mid = (low + high) /2; Comparable midVal = (Comparable)amid; int cmp = midVpareTo(key); if (cmp 0) high = mid - 1; else return mid; / key found return -(low + 1); / ke
3、y not found. 算法思想描述:查找的数组必须是按关键字值排好序;减半查找范围,确定待查元素是否存在于数组中。1、获取中间元素的位置,拿带查元素与中间位置元素比较;2、比中间元素大,在后半部分找;3、比中间元素小,在前半部分找。注意问题:sort()的使用binarySearch()的使用数组与 Arrays 类的区别练习:请参见读程序写结果中程序1、程序 2、程序 3 常璐璐,赵玉霞编精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 23 页 - - - - - - - - - - 2
4、 List 、ArrayList 学习目标:1. 掌握 ArrayList的具体使用2. 掌握 List接口的实现ArrayList 是一种线性表,在内存中是连续存储的,适合于元素的随机存取。添加和删除操作是需要依据添加的位置来定,如果在ArrayList 最后元素后面添加和删除元素,在性能方面还算好,但是如果是在ArrayList 中间添加和删除元素的话,代价就会很大。1.ArrayList结构 特点:数组大小固定,ArrayList可以自动增加空间ArrayList常用方法:size()返回此列表中的元素数。get()返回此列表中指定位置上的元素。set()用指定的元素替代此列表中指定位置
5、上的元素。add()将指定的元素添加到此列表的尾部;将指定的元素插入此列表中的指定位置。contains()如果此列表中包含指定的元素,则返回 true。remove()移除此列表中指定位置上的元素。Object toArray()按 适 当 顺 序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。3. 遍历方法for 循环语句: for(int i=0;i;i+) 迭代器: Iterator it = list.iterator(); while( it.hasNext() ) E e = it.next(); forEach 结构: for(E e : list) 4. 了解 Ar
6、rayList与 Vector 的区别5List接口的实现6. 继承关系如下图:1.List是有序的 Collection,使用此接口能够精确的控制每个元素插入的位置。2.List接口与其常用实现类的继承实现关系:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 23 页 - - - - - - - - - - 3.对比 List接口的两个常用实现类简述实现操作特性成员要求List 提供基于索引的对成员的随机访问ArrayList 提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好成员
7、可为任意Object子类的对象LinkedList 对列表中任何位置的成员的增加和删除支持较好,但对基于索引的成员访问支持性能较差成员可为任意Object子类的对象1、上机实现下面程序public static void main(String args) List list = new ArrayList(); for(int i=0;i5;i+) list.add(编程词典 +i); ListIterator li = list.listIterator(); while(li.hasNext() System.out.println(li.next(); 1、 练习:请参见读程序写结果中
8、程序4、程序 52、 创建一个类Cat :包含属性name ,在构造方法中进行初始化;添加一个方法show() ,用以打印 name属性的值创建一个类CatTest :添加 main 方法,实现创建一个ArrayList,向其中添加几个Cat对象遍历该集合,并且对每个Cat 对象调用 show() 方法参考代码: class Cat private String name; public Cat(String name) this.name = name; public void show() System.out.println(name); public class CatTest pub
9、lic static void main(String args)/ 创建一个 ArrayList,向其中添加几个Cat 对象;ArrayList list = new ArrayList(); list.add(new Cat(mimi); list.add(new Cat(qiqi); list.add(new Cat(ding);/ 遍历该集合,并且对每个Cat 对象调用 show() 方法。for(int i= 0;ilist.size();i+) Cat c = (Cat)list.get(i); c.show(); 精品资料 - - - 欢迎下载 - - - - - - - - -
10、 - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 23 页 - - - - - - - - - - 3 LinkedList 学习目标:1. 掌握 LinkedList类的使用方法2. 掌握栈和队列的概念1. 结点、链表的概念以及链式存储的思想2.LinkedList类的常用方法(对比 ArrayList)的掌握3. 与 ArrayList类比较,各自特点,如何应用、选择LinkedList的常用方法:add()向链表末尾添加一个新的节点remove()删除指定位置上的节点;删除首次出现含有数据elemen的节点。get()得到链表中指定位置处节点中的对象。s
11、et()将当前链表index 位置结点中的对象替换为参数element 指定的对象,并返回被替换的对象。4. 用 LinkList类实现栈和队列栈中常用方法:pop()从此列表所表示的堆栈处弹出一个元素。push()将元素推入此列表所表示的堆栈。新增以下新方法:构造方法 LinkedList() getFirst()和 getLast() removeFirst()和 removeLast() addFirst()和 addLast()5、类继承关系如图:List接口实现:1.LinkedList是采用双向循环链表实现的。2. 利 用LinkedList实 现 栈(stack)、队列 (que
12、ue) 、双向队列(double-ended queue ) 采用链表的方法来实现栈:用方法addFirst(Object element)实现进栈操作。用方法 removeFirst()实现出栈。用方法 getFirst()实现栈顶数据查询。用方法 isEmpty() 实现栈是否为空。练习:请参见读程序写结果中程序6、程序 7、程序 7 上机操作: 创建一个类Stack ,代表堆栈(其特点为:后进先出),添加方法 add(Object obj)、以及 delete( ),添加 main 方法进行验证,要求:使用 LinkedList实现堆栈在向 LinkedList中添加时,使用addLas
13、t( )方法在从 LinkedList中取出时,使用removeLast( )方法精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 23 页 - - - - - - - - - - 4 Collections 与 Collection学习目标:1. 会使用 Collections类 2. 掌握 Collection接口1. 了解 Collection接口2. 掌握 Collection接口常用方法3. 掌握 Collections类中常用方法Collection接口中常用方法: toArray(
14、) 返回包含此 collection 中所有元素的数组。add() 确保此 collection 包含指定的元素。equals() 比较此 collection 与指定对象是否相等。hashCode() 返回此 collection 的哈希码值。size() 返回此 collection 中的元素数。iterator() 返回调用类集的迭代程序remove()从调用类集中删除obj 的一个实例。如果这个元素被删除了,则返回true;否则返回false4Comparable 与 Comparator 的区别联系5、Collections类的继承关系:Collections类中常用方法: bina
15、rySearch()使用二分搜索法搜索指定列表,以获得指定对象。sort()根据元素的自然顺序对指定列表按升序进行排序。synchronizedMap() 返回由指定映射支持的同步(线程安全的)映射。synchronizedSet() 返回指定set 支持的同步(线程安全的) set。sort()、reverse()、max()、min()、fill() 等方法6、Collection接口的继承关系:1.Collections中的大多数方法都与List或 collection有关。1Collection 是最基本的集合接口,一个Collection 代表一组 Object,即 Collecti
16、on 的元素(Elements)。一些 Collection 允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK 不提供直接继承自Collection 的类, Java SDK 提供的类都是继承自Collection 的“ 子接口 ”如 List 和 Set。2Collections 类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在collection 上操作的多态算法,即“ 包装器 ” ,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。2、 Collection 的遍历: Colle
17、ction的实 际 类 型 如 何 , 它 都 支 持 一 个iterator()的方法,该方法返回一个迭代器 , 使 用 该 迭 代 器 即 可 逐 一 访 问Collection中 每 一 个 元 素 。 借 助Iterator接口实现。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 23 页 - - - - - - - - - - Iterator接口结构:模板代码:Iterator it=collection.iterator(); / 获得一个迭代器while(it.hasNext(
18、) Object obj = it.next(); / 得到下一个元素利用 Collection接口的iterator()获得一个实现了Iterator 接口的迭代器,然后利用其完成Collection 接口对象的遍历操作。模板代码如右所示:对象排序方法:1、Comparable 接口所有可以”排序“的类都实现了java.lang.Comparable 接口Comparable 接口中只有一个方法:public int compareTo(Object obj); 2、Comparator 接口Comparator 通常在对于自然排序不能满足需要时使用。Comparator 接口定义了两个方法
19、:compare( )和equals( )。 public interface Comparator int compare(T o1, T o2); boolean equals(Object obj); 练习:请参见读程序写结果中程序9( Collections)练习:请参见读程序写结果中程序10( Collections、Iterator接口)练习:请参见读程序写结果中程序11( Comparator 接口)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 23 页 - - - - - -
20、 - - - - 5 Set 与 HashSet 学习目标:1掌握 Set 接口常用方法2. 掌握 HashSet 的特点及学会使用HashSet 类 3. 了解其它的Set 接口实现类1、Set 接口:扩展了 Collection 接口, Set 接口是Collection接口的子接口,不包含重复元素。它采用所有原始方法,并且未引入任何新方法。继承关系如下图:Set 接口定义:publicinterface Set extends Collection / 接口定义请参照API 帮助文档Set 接口中的常用方法: 2、Set 接口提供了两种通用实现:HashSet 和 TreeSet Has
21、hSet ,采用散列函数对元素进行排序,这是专门为快速查询而设计的;来存储不重复的集合。TreeSet ,当需要以一种排序的方式从集合中提取元素的时候使用。为了正确运行,添加到 TreeSet 中的元素必须是可排序的。采用二叉树的数据结构进行排序元素。3、HashSet 类定义: 是 Set 接口最常用的实现之 一 , 存 入HashSet的 对 象 必 须 定 义hashCode() ,其元素在其中存储不保证任何顺序。实际上,HashSet 存储对象引用时是按照哈希策略 来实现的。publicclassHashSet extendsAbstractSet implementsSet , Cl
22、oneable, java.io.Serializable / 具体方法实现参考API 帮助文档HashSet 类常用方法:HashSet 类继承关系:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 23 页 - - - - - - - - - - HashSet 类的几个构造器: public HashSet(): 该构造器将构造一个空的HashSet 对象。该对象的初始容量为16。public HashSet(int initalCapacity):参数initalCapacity表 示
23、指 定 的 初 始 容量,该构造器将构造一个具有指定容量的空 HashSet 对象。public HashSet(Collection c) : 参数 c 为包含指定元素的Collection。该构造器将构造一个以c 中的元素为初始内容的HashSet 对象。4、 TreeSet类 定 义 : 实现了SortedSet接口,此类保证排序后的Set按照升序排列元素,底层为树结构。使用它可以从Set中提取有序的序列。publicclassTreeSet extendsAbstractSet implementsNavigableSet, Cloneable, java.io.Serializabl
24、e TreeSet 类继承关系:TreeSet 类中常用方法见右图:1 Set 中的几个重要方法:equals()、contains()、hashCode() 2 Set 接口中元素具有唯一性,改写equals()方法。Set是一种不包含重复的元素的Collection,即任意的两个元素e1 和e2 都有e1.equals(e2)=false,Set 最多有一个null元素。3 HashSet散 列 (hash) , 特 点 : 查 找 的 高 效 率 ( 例 如 两 个 集 合 相 交 ) , 改 写hashCode() 方法分析: HashSet 要求放入的对象必须实现hashCode()
25、 方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象, hashcode 是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例。4了解其它的Set 相关类: LinkedHashSet 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 23 页 - - - - - - - - - - 随堂练习:1、分析程序,写出结果import java.util.Collection; import java.util.HashSet; import java
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年实用数据结构辅导知识点 2022 实用 数据结构 辅导 知识点
限制150内