List

AbstractList

继承于AbstractCollection并且实现了大部分List接口。

AbstractSequentialList

继承于 AbstractList ,提供了对数据元素的链式访问而不是随机访问。

LinkedList

该类实现了List接口,允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:

List list = Collections.synchronizedList(new LinkedList(...));

LinkedList 查找效率低。

ArrayList

该类也是实现了List的接口,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的, 在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。

遍历List

我们首先创建一个List:

List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");

for

for(int i=0; i<list.size(); i++) {
    System.out.println(list.get(i));
}

foreach

for (String str : list) {
    System.out.println(str);
}

把链表变为数组相关的内容进行遍历

String[] strArray = new String[list.size()];
list.toArray(strArray);
for(int i=0;i<strArray.length;i++) {
    System.out.println(strArray[i]);
}
for(String str:strArray) {
    System.out.println(str);
}

使用迭代器进行相关遍历

Iterator<String> ite = list.iterator();
while(ite.hasNext()) {
    System.out.println(ite.next());
}

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress