public class collectionsTest {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<Integer>();
ArrayList<Integer> list = new ArrayList<Integer>();
Vector<Integer> vector = new Vector<Integer>();
char ch='a';
for (int i = 0; i < 10; i++) {
set.add(10+i);
list.add(10+i);
vector.add(10+i);
}
System.out.println("初始化后set里的值为:" + set.toString());
System.out.println("初始化后list里的值为:" + list.toString());
System.out.println("初始化后vector里的值为:" + vector.toString());
for (int i = 0; i < 5; i++) {
set.remove(i);
list.remove(i);
vector.remove(i);
}
System.out.println("此时set的值为" + set.toString());
System.out.println("此时后list的值为" + list.toString());
System.out.println("此时后vector的值为" + vector.toString());
}
}
先看个代码!!
这是别人的代码!!
自己分析下!1
先看输出
初始化后set里的值为:[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
初始化后list里的值为:[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
初始化后vector里的值为:[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
此时set的值为[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
此时后list的值为[11, 13, 15, 17, 19]
此时后vector的值为[11, 13, 15, 17, 19]
ArrayList和Vector都是继承与java.util.AbstractList<E>
的抽象类!!都是以链表的数据结构存在的!
都有方法 remove(int index) remove(Object o)
有两种方法!根据索引去除 集合里的值 和直接去除对象值!
int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index, numMoved);
每remove一次后都有一次 指针的移动!!
也就是这是数组已不是刚才那个数组了!所有的元素补空了删除元素的空缺!!
注意这个函数的运用
System.arrayCoay();