201711671235学习《java程序设计》第十四周(15章)学习总结

本文深入解析Java中的泛型、链表、堆栈、散列映射、树集和树映射等数据结构,涵盖其定义、声明、使用方法及遍历、排序、查找等关键操作,适合Java学习者掌握核心数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

教材学习内容总结

1.泛型

可以建立具体类型的安全的集合框架,如链表、散列表等数据结构

优点:不比进行强制类型转换,即不要求进行运行时类型检查

1.1泛型类的声明

class 泛型类名<泛型列表>(泛型列表可以是任何对象和接口,但不能是基本类型数据)

泛型列表的类型作为下列变量方法的类型
类的成员变量
类的方法
局部变量

 

泛型类体和普通类的类体完全相同(由成员变量和方法构成)

1.2使用泛型类声明对象

泛型类名<具体的类型名> 对象名

2.链表(动态地减少或增加数据项)

链表是若干个称作结点的对象组成的一种数据结构,每个结点含有一个数据和下一个结点的引用,或含有一个数据并含有上一结点的引用和下一个结点的引用。

2.1LinkedList<E>泛型类

LinkedList<E>泛型类创建的对象(链表对象)以链表结构存储数据

例:LinkedList<E> mylist=new LinkedList<String>() 
声明创建链表指定E的具体类型
链表使用add(E obj)方法向链表依次增加结点

 

2.2遍历链表

get(int index)遍历熟读慢
使用迭代器 
链表对象使用itertor()方法获取一个Iterator对象=迭代器

 

2.3排序和查找

Collections类提供用于排序和查找的类方法:

public static sort(List<E> list)

可以将list中的元素按升序排序

int binarySearch(List<T>list,T key,CompareTo<T> c)

使用折半法查找list是否含有和参数key相等的元素,如果有,则返回和key相等的元素在链表中的索引位置(链表的索引位置从0开始),否则返回-1

查找

String类实现了Comparable接口,规定了字符串按字典序比较大小

如果链表中存放的对象不是字符串对象,创建对象的类必须实现Comparable接口,接口方法intcompareTo(Object b)规定对象大小关系

2.4洗牌与旋转

public static void shuffle(List<E> list)将list中的数据按洗牌算法重新随机排列

static void rotate(List<E>list,int distance)

旋转表中数据,当参数distance取正值时,向右转list中的数据,反之向左转

public static void reverse(List<E>list)

翻转list中的数据

 

3.堆栈

“后进先出”的数据结构,只能在一端进行输入(“压栈”)或输出(删除、“弹栈”)数据的操作

优点:节省内存开销

压栈public E push(E item)
弹栈public E pop()
判断堆栈是否有数据,有数据返回truepublic Boolean empty()
获取栈端的数据(但不删除)public E peek()
获取数据在堆栈中的位置(最顶位置为1,没有返回-1)public int search(Object data)

 

4.散列映射

HashMap<K,V>泛型类创建的对象称为散列映射

常用方法:

public void clear()清空散列映射
public Object clone()返回当前散列映射的一个克隆
public boolean containsKey(Object key)如果散列映射有键/值对使用了参数指定的键,方法返回true
public boolean containsValue(Object key)如果散列映射有键/值对的值是参数指定的值,方法返回true

public V get(object key)

返回散列映射中使用key做键的键/值对中的值
public boolean isEmpty()如果散列映射不含任何、键/值对,方法返回true
public V remove(Object key)删除散列映射中键为参数指定的键/值对,并返回键对应的值
public int  size()返回散列映射的大小,即散列映射中键/值对的数目

 

遍历散列映射

public Collection<V>values()--返回->实现了Collection<V>接口类创建的对象,Collection<V>接口变量=对象的引用,接口变量.interator()---获取->Iterator对象-----存放散列映射中所有键/值对的值

5.树集

5.1TreeSet<E>泛型类

TreeSet<E> 对象名=new TreeSet<E>();对象称作树集---->采用树结构存储数据,树节点中的数据会按存放的数据的“大小”一层层地依次排列(同一层从左到右按字典从小到大递增排序)

5.2结点大小关系

树集中的任何两个字符串对象知道怎么比较大小(字符串对象.compareTo(String s))

上层比下层的小

5.3TreeSet类的常用方法

public boolean add(E o)向树集添加结点,结点中的数据由参数指定,添加成功返回true

public void clear()

删除树集中的左右结点
public void contains(Object o)如果树集中有包含参数指定的对象,该方法返回true
public E first/last()返回树集中的第一个//最小(最后一个/最大))结点中的数据
public boolean isEmpty()判断是否为空树集(数集不含任何结点返回true)
public boolean remove(Object o)删除数集中的存储参数指定的对象的最小结点
public int size()返回树集中结点的数目

6.树映射

TreeMap<K,V>类实现了Map<K,V>接口,称为TreeMap<K,V>对象为树映射(结点存储字/值对)

public V put(K key,V value)添加结点

与树集不同:树映射保证结点是按照结点中的关键字升序排列。

7.自动装箱与拆箱

java1.5后允许把基本数据类型添加到类似链表等数据结构中,系统会自动完成基本数据类型---- 转换-->相应对象(自动装箱)

当一个数据结构中获取对象时,如果该对象是基本数据的封装对象,系统自动完成对象---转换--->基本类型

学习进度条

 代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行20篇400小时会用java语言独立设计程序
第一周13/131/1 5/5学会使用jdk以及对java源程序语句的基本注意事项有所了解
第二周140/143 1/210/15学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处
第三周276/4191/320/35java中运算符,表达式和语句的表现形式,类的声明,定义方法
第四周600/10191/430/45类和对象
第五周

150/1169

1/510/55继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作
第六周100/12691/68/63接口定义、使用方法和作用
第七周100/13691/79/72内部类(独有)包含匿名类和异常类(检测)的使用方法和作用
第八周150/18691/810/82java常用实用类和方法
第九周100/19691/920/102组件、容器、窗口、(如何处理事件:事件源,监视器、接口)
第十周80/20491/1010/112输入输出流和各种流的作用、构造方法
第十一周92/21411/117/119连接数据库步骤、查询、更新、添加、删除语句
第十二周104/22451/1215/134多线程的运行顺序和特点
第十三周150/23951/1312/146线程、套接字、数据报、组件面板等的结合应用
第十四周50/24451/145/151绘制图像,图像,播放音频
第十四周91/25361/156/157泛型类(链表、堆栈、树)的声明和定义

参考文献

《java2实用教程(第5版)》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值