您的位置:首页 > 其它

3.3.3--3.3.5List接口、ArrayList类和LinkedList类和remove方法对LinkedList类的使用和ListIterator接口

2018-02-22 00:30 232 查看
3.3.3List接口、ArrayList类和LinkedList类



//构造List看ArrayList、LinkedList的运行时间复杂度
public static void makeList(List<Integer> lst,int n) {
lst.clear();
for (int i=0;i<n;i++) {
//在末端添加项构造List
//ArrayList、LinkedList作为参数被传递,该函数运行时间都是O(N)
lst.add(i);
//在前端构造List
//LinkedListde的运行时间都是O(N),而ArrayList是O(N^2)
//因为ArrayList在前端进行添加时一个O(N)的操作
lst.add(0, i);
}
}
public static int sum(List<Integer> lst) {
int total = 0;
//①这种普通的for循环,ArrayList运行时间O(N),LinkedList是O(N^2),
//因为LinkedList对get的调用运行时间是O(N)

//②如果使用增强的for循环,那么两个List都是O(N),
//因为迭代器将有效的从一项到下一项推进
for (int i = 0; i < lst.size(); i++) {
total += lst.get(i);
}
return total;
}

在ArrayList中有一个容量的概念,它表示基础数组的大小。在需要的时候,ArrayList将自动增加其容量以保证它至少具有表的大小。如果该大小的早期估计存在,那么ensureCapacity可以设置容量为一个足够大的量以避免数组容量以后的扩展。再由,trimToSize可以在所有的ArrayList添加操作完成之后使用以避免浪费空间。

3.3.4remove方法对LinkedList类的使用
例子:将表中的偶数项删除。public static void removeEvenVer(List<Integer> lst) {
Iterable<Integer> itr = lst.iterator();
while (itr.hasNext()) {
if (itr.next() % 2 == 0) {
itr.remove();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息