一、LinkedList概述
ArrayList 集合在查询元素时速度很快,但在删除时效率较低,为了克服这种局限性,可以使用LinkedList。
LinkedList内部维护了一个双向循环链表,链表中的每一个元素彼此相连起来。插入和删除元素只需要修改元素之间的应用关系即可。
特点:
- 增删效率很高
- 查询效率低
二、LinkedList特有方法
示例:
LinkedList<String> list=new LinkedList<>();
list.add("yyy");
list.add("wtc");
list.add("yyy");
//特有的方法
list.addFirst("aaa");//添加到列头
list.addLast("bbb");//添加到列尾
System.out.println(list);
list.removeFirst();//删除列头
list.removeLast();//删除列尾
System.out.println(list);
//寻找某个字符串最后出现的位置
System.out.println("yyy最后出现的位置是"+list.lastIndexOf("yyy"));
//推荐用迭代器去遍历
ListIterator<String> it= list.listIterator();
while (it.hasNext()){
System.out.println(it.next());
}
运行结果:
三、练习题
- 移除ArrayList中的重复元素
import java.util.ArrayList;
public class demo_移除arraylist里的重复元素 {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("b");
list.add("a");
list.add("b");
list.add("a");
list.add("b");
for(int i=0;i<list.size();i++){
String s=list.get(i);
for(int j=i+1;j<list.size();j++){
String s1=list.get(j);
if(s.equals(s1)){
list.remove(j);
j--;
}
}
}
System.out.println(list);
}
}
运行结果:
- ArrayList嵌套ArrayList
import java.util.ArrayList;
public class demo_Arraylist嵌套Arraylist {
public static void main(String[] args) {
ArrayList a1=new ArrayList();
a1.add("小米");
a1.add("小明");
a1.add("小红");
ArrayList a2=new ArrayList();
a2.add("wtc");
a2.add("yyy");
ArrayList<ArrayList> aa=new ArrayList<>();
aa.add(a1);
aa.add(a2);
for(int i=0;i<aa.size();i++){
ArrayList arrayList=aa.get(i);
for(int j=0;j<arrayList.size();j++){
System.out.println(arrayList.get(j));
}
}
}
}
运行结果: