Java中的ArrayList、LinkedList以及它们的区别
一、ArrayList
1.什么是ArrayList:
1.1、ArrayList就是动态数组,它提供了一些好处:
1.2、动态的增加和减少一些元素
1.3实现了collection和list的接口
1.4、灵活的设置数组的大小
2.ArrayList的常用方法
2.1、构造方法
//构造一个具有指定初始化容量的列表
public ArrayList(int? initial Capacity);
//构造一个初始容量为10的空列表
public ArrayList(10);
2.2常用方法
2.2.1、添加元素
add(E e);//将指定的元素添加到此列表的尾部
add(int? E? element);//将指定的元素插入此列表中的指定位置
2.2.2删除元素
remove(int? index);//移除此列表中指定位置上的元素,向左移动所有后续元素
remove(object?0);//移除此列表中首次出现的指定元素(如果存在),则列表不
做移动(如果不存在)。
clear()//移除列表中的所有元素,此调用返回后,列表将为空
2.2.3获取元素的总数
size();//返回列表中的元素数
2.2.4获取元素
get(int index);//返回此列表中最后一次出现的指定元素
2.2.5设置位置
set(int index , element);//用指定的元素替代此列表中指定的元素
2.2.6查找
indexOf(object o);//返回此列表中最后一次出现的指定元素的索引,
或如果此列表中不包含索引,则返回-1
2.2.7转换为数组
toArray();//安适当顺序(从第一个到最后一个)返回包含数组中所有
元素的数组。
3、使用ArrayList的实例
import java.util.Arraylist;
public class List1{
public class void main(String [] args){
int i;
ArrayList list = new ArrayList();
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
//遍历集合
for(int i = 0;i< list.size();i++){
Ststem.out.println(list.fet(i))
}
//删除元素
list.remove(3);
Ststem.out.println("将索引是3 的元素删除后,数组的元素是:")
for(int i = 0;i< list.size();i++){
Ststem.out.println(list.fet(i))
}
//set();的使用举例
String s = new String("t");
list.set(0,t);
list.set(1,h);
Ststem.out.println("使用set()后,数组的元素是:")
for(int i = 0;i< list.size();i++){
Ststem.out.println(list.fet(i))
}
}
}
二、LinkedList
1.什么是linkedlist
2.linkedlist的实例
import java.util.*;
public class LinkedListDemo {
public static void main(String []args){
LinkedList list = new LinkedList();
//添加元素
list.add("one");
list.add("two");
list.add("three");
//size()返回链表中的元素数
System.out.println("<--list中的内容 :" + list + "-->");
//返回链表中的第一个元素
String first = (String) list.getFirst();
//返回链表中的最后一个元素
String last = (String) list.getLast();
System.out.println("<--list中第一个元素为 :" + first + "-->");
//在链表最前面添加一个元素
list.addFirst("Begin");
System.out.println("<--list中最后一个元素为 :" + last + "-->");
在元素最末尾添加一个元素
list.addLast("End");
System.out.println("<--list中的内容 :" + list + "-->");
System.out.println("<--删除list中的第一个和最后一个元素-->");
//删除链表中的第一个元素
list.removeFirst();
删除链表中的最后一个元素
list.removeLast();
System.out.println("<--list中的内容 :" + list + "-->");
}
}
三、ArrayList、LinkedList的区别
1.ArrayList、是基于动态数组的数据结构,而LinkedList 是基于链表的数据结构
2.在往里面插入数据时(add、remove操作时),linkedlist会比arraylist快很多,
因为前者仅仅是一个类型的插入,而后者要将整个数组向后移动
3.对于随机访问的(get()/set())操作,arraylist优先于linkedlist,因为linkedlist
要移动指针
总之,当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机的访问
其中的元素时,使用arraylist会提供较好的性能;当你操作的是在一列数据的前面或中
间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用linkedlist.