使用LinkedList在Java中实现Set

Adi*_*are -3 java linked-list

我必须创建一个名为Myset的类,其中包含IsEmpty(),Insert(Object O)等方法.我想使用Linked对象列表来实现Myset类.但是,由于我是Java的新手,我不得不创建对象本身,即使我不清楚如何开始.我想到了这样的事情:

public class Myset {
    LinkedList<Object> LL = new LinkedList<Object>(); 
}
Run Code Online (Sandbox Code Playgroud)

我还需要编写一个方法:: public Myset Union(Myset a)返回一个集合,它是当前集合与集合a的并集.这可以通过迭代a来完成,如果a中特定索引处的元素不包含在LL中,那么我们将该元素添加到LL.但是我如何在Java代码中编写它?
PS:这是一个赋值问题,我们不允许使用Sets实现.

Gho*_*ica 5

一些起点.

你应该使用"真正的"泛型:

class MySet<T> {
  private final LinkedList<T> objects = new LinkedList<T>();
Run Code Online (Sandbox Code Playgroud)

或完全遗漏泛型,如:

class MySet {
  private final LinkedList objects = new LinkedList();
Run Code Online (Sandbox Code Playgroud)

你看,你的解决方案

LinkedList<Object> LL = new LinkedList<Object>(); 
Run Code Online (Sandbox Code Playgroud)

将允许用户可以在您的集合中存储任何类型的对象.所以,首先是一个String,然后是一个Integer,依此类推.最有可能的是,这不是你想到的.通常,Java中的集合是关于特定类型的对象,例如仅字符串,或仅仅是整数对象.

(旁注:LL是一个字段的坏名称 - 所以研究java命名指南行也是如此)

但是使用起来甚至更少<Object>.这就像使用泛型而不在同一点使用它们.

现在,你有一个MySet类,你逐个开始:

  1. 您添加了一个允许实例化类对象的构造函数
  2. 您可以添加方法(逐个!),以便与您的班级进行合理的互动

事情是:慢慢开始.不要试图提前解决大事.相反:只需确保您的类作为Set工作 ; 所以你可以添加东西,你可以检查它们是否存在; 等等.

只有当所有这些基本的东西都工作时,你才应该前进并添加诸如"联盟"之类的东西.