特点:
1、 LinkedList以链表的形式存储数据、对增删元素有很高的效率、查询效率较低、尤其是随机访问、效率不忍直视、
2、 LinkedList继承AbstractSequentialdList(其继承与AbstractList、所以要求其子类要实现通过索引操作元素)、使得LinkedList支持使用索引的“增删改查”操作、
3、LinkedList直接实现了List接口、使其可以内部存储元素有序并且为每个元素提供索引值、
4、LinkedList直接实现了Deque接口、Deque接口继承了Queue、使其可以作为双向链表这种数据结构来使用、操作元素、
5、LinkedList直接实现了Cloneable接口、使其可以复制其中的全部元素
6、存放的元素有序可重复
构造器:
- LinkedList() 创建一个空的list容器集合
- LinkedList(Collection<? extends E> collection) // 创建一个LinkedList,包含给定集合中的全部元素。
常用方法:
- boolean add(Object o) 添加一个元素到集合的末尾,返回是否添加成功。
- boolean addAll(Collection c) 将一个集合里面的所有元素添加到指定集合的后面,返回是否添加成功。
- void clear() 清空集合里面的所有元素。
- Object clone() 返回一个集合的拷贝。
- boolean contains(Object o) 判断一个集合是否包含某个元素,如果包含则返回true,否则返回false,如果要改写判断是否包含的规则,则需要重写equals方法。
- Object get(int index) 根据下标来获取集合元素
- int indexOf(Object o) 通过元素来找到它所在集合的下标。
- Object remove(int index) 通过下标来删除指定元素。
- int size() 返回集合的长度
- Object[] toArray()返回包含集合里面所有元素的数组,用于将集合转成数组。
遍历
- for循环
for (int i = 0; i < collection.size(); i++) {
// some code
// example: collection.get(i);
}
- 自动增强的for循环
for (Object obj : collection) {
// some code
}
- 迭代器
Iterator<Object> it = collection.iterator();
while(it.hasNext()){
// some code
// example it.next()
}
例子###
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList ll = new LinkedList();//该声明方式只能用for循环遍历
LinkedList<Integer> llist=new LinkedList<Integer>();
System.out.println("Initial size of ll is" + ll);
// add elements to ll
ll.add(1);
ll.add(2);
ll.add(3);
ll.add(4);
ll.add(5);
ll.add(6);
llist.add(6);
llist.add(7);
llist.add(8);
llist.add(9);
llist.add(10);
llist.add(11);
//show the linked list
System.out.println(ll);
System.out.println(ll.size());
//获取linked list 的第一个元素和最后一个元素
System.out.println("first element:"+ll.getFirst());
System.out.println("first element:"+ll.getLast());
//删除linked list的第一个元素和最后一个元素
ll.removeFirst();
ll.removeLast();
System.out.println(ll);
//判断linked list是否包含某个元素
System.out.println(ll.contains(2));
//返回linked list中某个元素的索引
System.out.println(ll.indexOf(3));
//在任意位置插入元素
System.out.println(ll.set(1,"s"));
//遍历linked list
//For Loop Example
for (int i=0; i<ll.size();i++) {
System.out.println(ll.get(i));
}
//Advance For Loop Example
for(Integer integ:llist) {
System.out.println(integ);
}
//Iterator Example
Iterator<Integer> crunchifyIterator = llist.iterator();
while (crunchifyIterator.hasNext()) {
System.out.println(crunchifyIterator.next());
}
}
}
网友评论