cs61b笔记 Project1

自用。

package

软件包是 Java 类的集合,所有这些类都为某个共同目标而工作。在 CS 61B 中,我们已经在不知不觉中看到了包。例如,org.junit 就是一个包,其中包含各种对测试有用的类,包括我们熟悉的 Assert 类,它包含有用的静态方法,如 assertEquals。换句话说,当我们看到 org.junit.Assert.assertEquals 时,org.junit 是包名,Assert 是类名,assertEquals 是方法名。我们称 org.junit.Assert.assertEquals 为方法的 "规范名称",称 assertEquals 为方法的 "简单名称"。

创建软件包时,我们会在文件顶部使用 package 关键字指定软件包名称,从而指定代码是软件包的一部分。例如,如果我们想声明一个文件是 deque 包的一部分,我们可以在文件顶部添加以下一行。 如:

package deque;

使用了包机制后,如果在一个类中使用了其他包中的类,需要使用 import 来引入。如果程序员想要使用 deque 包中的类或方法,他们必须使用完整的规范名称,例如 deque.ArrayDeque。 

通常,包名是编写代码的实体的互联网地址,但要倒过来。例如,JUnit 库托管在 junit.org,因此包名为 org.junit。

软件包为什么有用?归根结底就是 "规范 "这个词。只要没有两个程序员为他们的包使用相同的包名,我们就可以在多个不同的上下文中自由使用相同的类名。例如,可能存在一个名为 com.hrblock.TaxCalculator 的类,它不同于 com.turbotax.TaxCalculator。由于要求使用完整的规范名称或使用导入,这意味着我们绝不会在本意是使用另一个类的情况下意外使用其中一个类。

从概念上讲,你可以把软件包理解为类似于计算机上的不同文件夹。在构建一个大型系统时,将其组织成不同的包是一个好主意。

import

1. 直接引用类,import java.util.Vector。

2. 引用整个包里的所有类 ,import java.awt.*  *号代替类名,但不代替包名。awt里子包的类不会被引用。

双端队列

注:deque是double ended queue的缩写,即双端队列。

具体来说,任何双端队列的实现都包含以下内容:

  • public void addFirst(T item):将 T 类型的项目添加到 deque 的前端。可以假设 item 永远不会为空。
  • public void addLast(T item):将 T 类型的项目添加到 deque 的后部。可以假设 item 绝不为空。
  • public boolean isEmpty():如果 deque 为空,则返回 true,否则返回 false。
  • public int size():返回 deque 中的条目数。
  • public void printDeque():从第一个到最后一个打印 deque 中的项目,以空格分隔。打印完所有项目后,再打印一行。
  • public T removeFirst():删除并返回 deque 中最前面的项目。如果不存在该项目,则返回 null。
  • public T removeLast():删除并返回位于 deque 后部的项目。如果不存在该项目,则返回 null。
  • public T get(int index):获取给定索引处的项目,其中 0 表示前一个项目,1 表示下一个项目,以此类推。如果不存在该项目,则返回 null。不得更改 deque!

外加cs61b的两个特殊要求:

  • public Iterator<T> iterator():让 Deque 对象是可迭代的(即 Iterable<T>),因此我们必须提供此方法来返回一个迭代器。(不要求完成)
  • public boolean equals(Object o):返回参数 o 是否等于 Deque。如果 o 是一个 Deque,并且包含相同顺序的相同内容(由泛型 T 的 equals 方法确定),则视为相等。here is相关链接.

其他要求:

类应该接受任何通用类型(不仅仅是整数)

在本项目中,你将为 Deque 接口提供两种实现:一种由链接列表驱动,另一种由调整大小的数组驱动。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
cs61b spring18是伯克利大学的一门计算机科学课程,是基于Java编程语言的数据结构和算法的进阶课程。对于学习者来说,有一些资源是可以帮助他们更好地理解和掌握这门课程的。 首先是课程网站,学生可以在伯克利大学的网站上找到cs61b spring18的课程页面,其中包含课程信息、课程教材、作业和项目说明等。这个页面非常详细,学生可以从中获取到所有关于这门课程的信息。 其次,教师提供了讲座的视频录像,学生可以通过观看这些录像来学习课程中的知识。这些录像可以在课程网站上找到并随时观看。教师在讲解知识时会结合具体的实例和代码,在给学生提供理论知识的同时,也给出了实践的操作方法。 此外,课程网站上还提供了课程讲义和课程作业的解答。学生可以下载这些讲义并进行学习,同时可以参考作业的解答来巩固和理解课程的概念和知识。 最后,在线论坛是一个很有用的资源。课程网站还提供了一个在线论坛,学生可以在这里与其他学生进行讨论和交流。他们可以分享问题和解决方案,互相帮助和支持。 总的来说,cs61b spring18的学习资源非常丰富,学生可以通过课程网站、讲座录像、讲义、作业解答和在线论坛等多种方式来学习和理解课程中的知识。这些资源旨在帮助学生更好地掌握数据结构和算法的概念和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值