0

我有一个链表问题源于我即将发布的这个作业提示。它可能有助于回答:

细节

Java String 类是不可变的(您不能更改内容)。这有时会妨碍您对字符串执行的操作(即更改现有字符串)。因此,对于这个作业,您将创建一个名为 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)

您必须使用链表来表示字符串的字符(您必须编写 LinkeList 类)。您的 LinkedList 类应包含用于更新和修改列表的基本操作。考虑到这一点,在 Java API 中实现 List 接口。对于您认为对 LinkedList 的功能而言不必要的方法,将这些方法存根并抛出一个异常,其中包含有关调用了什么方法以及尚未实现的信息的异常。注意:确保你的 LinkedList 类没有做任何 MutableString 特定的事情。随意使用以下已删除的 LinkedList 类来完成您的作业。它可能不包含您需要的所有方法,但它确实包含来自 Java API 的 List 接口的方法。

MutableString 必须尽可能利用 LinkedList 行为(方法)(不要在 MutableString 中编写与 LinkedList 类中的内容相同的代码)。因此,您的 MutableString 将包含一个引用 LinkedList 对象的字段。顺便说一句,这个概念被称为委托,这是软件工程和设计中非常重要的概念。不要将 MutableString 设计为继承自 LinkedList。

MutableString 的每个节点都应该包含一个字符——请注意,这并不意味着对节点类中数据的引用应该/必须是字符类型——这会使你的 LinkedList 类特定于 MutableString,我们不希望在这种情况下。

**我不明白的部分是上面的第 2 段,它谈到了从链表类继承。我一直习惯于编写诸如 public class MutableString extends LinkedList 之类的东西,但我们不能这样做,而且我真的不知道如何在不从类继承的情况下开始编写这个 mutablestring 类。帮助解释如何做到这一点,差异会很棒。谢谢。

我不太擅长链表,所以这个问题很简单:) **

4

1 回答 1

0

它说你应该使用委托而不是继承。

有关委托和继承之间的区别,请查看内容。它用一个例子来解释。

于 2012-04-22T08:31:08.670 回答