我有以下项目要完成,但设置它的人并没有多大意义。我已经完成了大约60%的程序,它感觉不对,我想查看其他人认为他们正在进行的事情。
对于项目的这一部分,您需要实现一个IntegerSet类。该集应该由一系列布尔值表示。当且仅当i在集合中时,第i个元素才为真。因此,可以作为集合元素的最大整数由数组的大小决定。
您应该提供以下方法: 具有单个整数参数domainMax的构造函数,并创建IntegerSet的实例,其元素可以是不大于domainMax的任何非负整数。最初该集应为空。您可以假设参数始终大于零。
一个方法addElement,它将非负整数作为参数并将其插入到集合中。如果元素超出集合的域最大值,则应增加域最大值以适应它。如果元素已存在,则该组不变。您可以假设永远不会使用否定参数调用该方法。
一个静态方法联合,它将两个集合作为其参数并返回一个新集合,该集合是两个集合的并集。请注意,作为参数提供的两个集可能具有不同的域最大值;结果联合应该具有这两个域最大值中的较大者。
静态方法交集,它将两个集合作为其参数,并返回一个新集合,这是两个集合的交集。请注意,作为参数提供的两个集可能具有不同的域最大值;生成的交叉点应该具有两个域最大值中较小的一个。
答案 0 :(得分:2)
规格似乎对我很好。它们的意思是设置为“集合论”。表示一组整数的一种方法,尽管从存储的角度来看效率低,但是使用一组布尔值。这是一个非常合理的练习。
显然,对于这个项目使用Set<Integer>
会更好,但是这一点很难理解。这是一个很有趣的编程练习。
与往常一样,将其分解为易于管理的部分。我会:
这些事情应该很简单,也许你会获得更多的洞察力。一旦你完成了union和intersection方法的工作。如果您仍有问题,请回来查看!
请记住,如果将值3添加到集合两次,它将只在集合中一次。 (集合的定义)。所以你的方法看起来像这样(记住这不是100%正确的定义):
public void addElement(int element) {
myArray[element] = true;
}
因此,当您第二次或第三次调用addElement(3);
时,它不会更改正确的状态。