Java:删除集合中的元素
我有一个集合,我想实现add()方法,只有正整数才能添加到集合中。该集合可以保存4个值,并且我已经使用下面的代码将每个值初始化为“-1”。Java:删除集合中的元素
public class Bag implements Collection {
private int[] elements;
public Bag() {
elements = new int[Runner.SIZE_OF_COLLECTION];
for (int i = 0; i < Runner.SIZE_OF_COLLECTION; i++) {
elements[i] = -1;
}
}
至今Add方法(下),我有这个遍历集合中的每个元素进行迭代,并更换每一个与我想补充(“TOADD”的正整数是小于0元)。
问题是,我只想添加正整数“toAdd”一次,并且在循环中没有中断,该方法用正整数替换集合中的EVERY元素“-1”。随着循环中断,该方法根本无法添加正整数。关于如何让方法将正整数添加到集合的任何想法只有一次?
public void add(int toAdd) {
for (int i = 0; i < Runner.SIZE_OF_COLLECTION; i++) {
if (elements[i] <= 0 && toAdd>0) {
elements[i] = toAdd;
}
break;
}
}
在此先感谢!
将中断移入if语句。
已经尝试过,并且它仍然不会让我添加一个积极的整数:(谢谢虽然! – user1178874 2012-01-30 20:44:36
结果是什么?所有-1?尝试打印Runner.SIZE_OF_COLLECTION的值在add() – RussS 2012-01-30 20:46:46
是啊,全是-1 – user1178874 2012-01-30 20:53:09
这将替换从elements
开始的第一个值,该值等于或小于0,值为toAdd
参数。
public void add(int toAdd) {
for (int i = 0; i < Runner.SIZE_OF_COLLECTION; i++) {
if (elements[i] <= 0 && toAdd>0) {
elements[i] = toAdd;
break;
}
}
}
接口Collection的add方法需要一个Object(或者一个你没有指定的泛型类型)。如果您尝试使用add方法覆盖/实现集合接口方法,那么方法签名不正确,并且永远不会调用它。
类别需要的样子:
public class Bag implement Collection<Integer>
{
// ... other necessary methods
public boolean add(Integer i)
{
// your method...
}
}
而且可能更容易比你的实现是要做到:
public class Bag extends java.util.ArrayList<Integer>
{
@Override
public boolean add(Integer i)
{
if ((i != null) && (i > 0)) super.add(e);
}
}
你可能需要重写其他添加方法为好,但如实,封装ArrayList而不是扩展它会更好。
我明白了!谢谢大家:) – user1178874 2012-01-30 22:46:31
我怀疑元素数组是空的。尝试打印出添加方法内的大小和内容。 – kosa 2012-01-30 20:50:33
标题有点误导......我相信你可能不得不在设计过程中多花一点时间来解决这个问题。另外,什么是亚军? – Gevorg 2012-01-30 20:52:58
Runner是设置集合大小的类,是的,我在标题中的意思是“添加”方法到集合,而不是“去除” – user1178874 2012-01-30 20:56:34