我必须创建一个名为Myset的类,其中包含IsEmpty(),Insert(Object O)等方法。我想使用Linked对象列表来实现Myset类。但是,由于我是Java的新手,我不得不创建对象本身,即使我不清楚如何开始。我想到了这样的事情:
public class Myset {
LinkedList<Object> LL = new LinkedList<Object>();
}
我还需要编写一个方法:public Myset Union(Myset a)
:返回一个集合,它是当前集合与集合a的并集。这可以通过迭代a来完成,如果a中特定索引处的元素不包含在LL中,那么我们将该元素添加到LL。但是我如何在Java代码中编写它?
PS:这是一个赋值问题,我们不允许使用集合实现。
答案 0 :(得分:5)
一些起点。
你应该使用“true”泛型:
class MySet<T> {
private final LinkedList<T> objects = new LinkedList<T>();
或完全遗漏泛型,例如:
class MySet {
private final LinkedList objects = new LinkedList();
你看,你的解决方案
LinkedList<Object> LL = new LinkedList<Object>();
允许用户在您的集合中存储任何类型的对象。所以,首先是一个String,然后是一个Integer,依此类推。最有可能的是,不你的想法。通常,Java中的集合是关于特定类型的对象,例如只有字符串,或者只有Integer对象。
(旁注:LL是一个字段的坏名称 - 所以也要研究java命名指南行)
但使用<Object>
的意义更小。这就像使用泛型而不在同一点使用它们一样。
现在,你有一个MySet类,你逐个开始:
事情是:慢慢开始。不要试图提前解决大事。相反:只需确保您的班级作为设置;所以你可以添加东西,你可以检查它们是否存在;等等。
只有当所有这些基本的东西都有效时,你才能继续前进并添加“联盟”这样的东西。
答案 1 :(得分:2)
链接列表不会为一般集提供任何好处。您可以简单地使用对象数组,ArrayList,Vector等,因为您必须将每个元素与另一个特定元素进行比较。如果你插入一个元素,你必须确保它已经不存在(这是一个集合的数学定义的一部分),就像你必须在联合,交叉点和设置差异中做到这一点一样。这意味着您必须实现可比性,因此您也应该使用Comparable接口而不是Object。