List和Set接口如何在Java中添加和删除对象?

时间:2017-01-23 02:44:41

标签: java arraylist copy

我有两个来自java.util包的集合。最初添加了几个元素,然后删除了元素。我试图在这里理解两件事。

问题1:两个集合中的删除元素是基于索引还是基于元素?下面的代码是在eclipse中编译和运行的。

int main()
{
    {
        Foo f;

        f.resetBar();
    }

    return getchar();
}

现在尝试删除两个集合中的元素:

List<Integer> list = new ArrayList<Integer>();
    Set<Integer> set = new HashSet<Integer>();
        for (int i = -3; i < 3; i++) {
                list.add(i);
                set.add(i);
            }
//List = [-3, -2, -1, 0, 1, 2] Set =[-1, 0, -2, 1, -3, 2]

问题2:查看用于删除元素的java源代码的实现代码。我如何理解以下源代码?

for (int i = 0; i <= 2; i++) {
   list.remove(i);
   set.remove(i);
  }
// Result is List = [-2, 0, 2] Set = [-1, -2, -3]

1 个答案:

答案 0 :(得分:0)

在回答您的第一个问题时,set.remove(i)调用了Set#remove(Object),它会按值删除元素。 List也有[{1}}方法(继承自remove(Object)),但由于Collectioniint会解析为更具体的list.remove(i) 3}},它通过索引删除元素。

至于你的第二个问题,代码是删除给定索引处的元素,方法是将所有项目向右移动,然后递减大小。有关详细信息,请参阅javadoc到List#remove(int)