我有一个链表问题,源于我即将发布的这个家庭作业提示。 它可能有助于答案:
细节
Java 字符串类是不可变的(不能更改内容)。 这有时会阻碍您想要对字符串执行的操作(即对现有字符串进行更改)。 因此,对于此赋值,您将创建一个名为 MutableString 的类。 注意/免责声明:Java API确实有一个类StringBuffer,它是可变的,但出于此赋值的意图和目的,我们将假装我们不知道它;-)
An object of the MutableString class contains the following operations/behaviors -- which means the class itself must contain the following methods:
Character charAt(int index): returns the Character at the specified index in the string -- if the index lies outside the string, throw a MutableStringIndexOutOfBoundsException (you must write this class)
void set(int index, Character ch): replaces the existing Character at the specified location -- if the index lies outside the string throw a MutableStringIndexOutOfBoundsException
void add(int index, Character ch): creates a new spot in the list for the Character at the index specified -- if the index lies outside the string throw a MutableStringIndexOutOfBoundsException
Character remove(int index): removes the Character at specified index -- if the index lies outside the string, throw a MutableStringIndexOutOfBoundsException
boolean remove(Character ch): removes the first occurrence (starting from the beginning of the MutableString) of the Character -- if the Character is not found, return false
boolean removeAll(Character ch): removes all occurrences of the specified Character -- if Character is not found, return false
void toUpper(): converts the current string to all upper case
void toLower(): converts the current string to all lower case
MutableString substring(int start, int finish): returns a string starting at the Character specified by start and concluding with the Character specified by finish -- if start or finish is outside the the string, throw a MutableStringIndexOutOfBoundsException
char [] toCharArray(): returns a char array containing all the characters in the string -- be sure and handle all cases
int length(): reports/returns the length of the string
String toString(): returns a String containing all the Characters
String toReverseString(): returns a String containing all the Characters in reverse order -- you must utilize recursion to accomplish this task
int compareTo(MutableString that): allows comparison of two MutableString objects -- this implies you will implement the Comparable interface for your MutableString class
void sort(): alphabetizes the letters in case-insensitive fashion in ascending order -- you must write the code for this sort (no API calls are allowed)
您必须使用链表来表示字符串的字符(您必须编写林克列表类)。 类应包含用于更新和修改列表的基本操作。 考虑到这一点,请在 Java API 中实现 List 接口。 对于您认为对 LinkedList 的功能不必要的方法,请存根这些方法并抛出一个异常,其中包含有关调用了哪个方法以及尚未实现该方法的信息。 注意:确保 LinkedList 类不执行任何特定于 MutableString 的操作。 请随意使用以下存根 LinkedList 类进行作业。 它可能不包含您需要的所有方法,但它确实包含来自 Java API 的列表接口的方法。
MutableString 必须尽可能使用 LinkedList 行为(方法)(不要在 MutableString 中编写与 LinkedList 类中的某些内容执行相同操作的代码)。 因此,您的 MutableString 将包含一个字段,该字段是对 LinkedList 对象的引用。 顺便说一句,这个概念被称为委派,这是软件工程和设计中非常重要的思想。 不要设计 MutableString,以便它继承自 LinkedList。
MutableString 的每个节点都应该包含一个 Character——请注意,这并不意味着对节点类中数据的引用应该/必须是 Character 类型——这将使你的 LinkedList 类特定于 MutableString,在这种情况下我们不希望这样。
**我不明白的部分是上面讨论从链表类继承的第 2 段。我一直习惯于编写类似公共类 MutableString 扩展 LinkedList 的东西,但我们不能这样做,我真的不知道如何在不继承类的情况下开始编写这个可变字符串类。帮助解释如何做到这一点,差异会很棒。谢谢。
我不太擅长链表,所以对这个问题:)**
它说你应该使用委托而不是继承。
有关委派和继承之间的区别,请查看此内容。它用一个例子来解释。