我正在做一个练习,我需要实现一个课程,并且很难理解解释.
这是解释/练习:
* Adds all of the elements in the specified set, for which it is
* possible, to this set.
* post: all elements, for which it is possible, in the
* specified set are added to this set.
* @return true if this set changed as a result of the call
Run Code Online (Sandbox Code Playgroud)
这就是答案
public boolean addAll(SimpleSet<? extends E> s) {
Iterator<? extends E> it = s.iterator();
boolean changed = false;
while (it.hasNext()) {
changed = add(it.next());
}
return changed;
}
Run Code Online (Sandbox Code Playgroud)
这就是我自己尝试做的事情,但是我很难将自己的脑袋缠绕在我应该做的事情上.
public boolean addAll(SimpleSet<? extends E> s){
Iterator<? extends E> itr = s.iterator();
while(itr.hasNext()){
add(itr.next());
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
感谢任何可能的帮助,
鲍比.
事实上,你的回答与提供的答案没有太大的不同,它会添加给出的所有元素.你没考虑什么?
根据方法的定义,它应该返回一个布尔值,指示该组是否由于添加元素而改变.在您的实现中,您只返回true,这意味着您没有考虑您尝试添加的元素何时已存在于集合中.虽然给定的实现只检查最后一个不正确的实现.
请记住,根据定义,Set不能包含重复的元素,因此布尔值只是让调用者知道某些内容是否实际发生了变化.