List
- ArrayList
- 随机存取效率高(get & set)
- 插入和删除较慢(除末尾)
- LinkedList
- 最优顺序存取
- 插入和删除较快
- 随机存取较慢
- larger feature set?更多的属性?
ArrayList
Method
构造方法
共三种
- 默认构造方法, 大小指定为10
public ArrayList() {
this(10);
}
- 指定大小构造方法
public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);
this.elementData = (E[])new Object[initialCapacity];
}
- 指定集合内容的构造方法
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
######常用方法
- ```contains(Object o)``` 判断是否包含某元素,使用equals对比
``` java
boolean isContain = list.contains(object);
-
remove(Object o)
删除指定对象,参数为对象的引用
list.remove(reference);
-
indexOf(Object o)
获取指定对象的位置,参数为对象的引用
// 返回-1代表未发现元素
int index = list.indexOf(reference);
-
subList(int from, int to)
获取子集list.subList(3, 9);
这里要注意,操作子集,会对原List进行影响。
如要对子集进行add/remove等操作,可以这样:
``` java
List<Integer> sub = new ArrayList<Integer>(list.subList(3, 9));
-
containsAll(Collection<?> c)
判断列表中是否包含指定collection的所有元素
list.containsAll(sub);
-
removeAll(Collection<?> c)
批量删除指定的元素
list.removeAll(sub);
-
set(int index, E element)
替换index位置的元素,并返回之前的元素
list.set(9, e);
-
toArray(), toArray(T[] t)
List转化为数组,一般用第二个
String[] array = new String[list.size()];
list.toArray(array);
扩容
扩容后的大小为原大小的1.5倍加1:
int newCapacity = (oldCapacity * 3)/2 + 1;
To Be Continue...
网友评论