Java:从集合中删除元素

时间:2012-01-30 20:38:32

标签: java collections add

我有一个集合,我想实现add()方法,这样只能将正整数添加到集合中。该集合可以包含4个值,我使用下面的代码将每个值初始化为“-1”。

  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”一次,并且在循环中没有中断,该方法用正整数替换集合中的每个元素“-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;
    }
}

提前致谢!

4 个答案:

答案 0 :(得分:1)

将中断移动到if语句中。

答案 1 :(得分:0)

您可以使用ArrayList而不是int数组。使用ArrayList,您可以获得第一次出现的索引-1并使用set方法在该索引处添加新值。

答案 2 :(得分:0)

这将使用elements参数的值替换toAdd中的第一个值,该值等于或小于0。

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;
        }             
    }
}

答案 3 :(得分:0)

接口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而不是扩展它。