一.LinkedList常见操作
package List相关;
/**
* LinkedList 链接列表
* LinkedList:底层使用的链表数据结构。特点:增删速度快,查询速度稍慢;
*/
import java.util.Iterator;
import java.util.LinkedList;
class linkedlist_test {
public static void main(String[] args){
LinkedList linkedlist = new LinkedList();
LinkedList linkedlist1 = new LinkedList();
linkedlist1.add("what");
// linkedlist1.add("zhangj");
/**增*/
System.out.println("------------新增操作------------");
//在尾部进行添加元素
linkedlist.add("what");
linkedlist.add("?");
//在指定位置添加元素
linkedlist.add(1,"now");
System.out.println(linkedlist);
//在列表首位添加元素
linkedlist.addFirst("one");
//在列表尾部添加元素
linkedlist.addLast("last");
//在指定添加元素
linkedlist.addAll(1,linkedlist1);
System.out.println(linkedlist);
/**查*/
System.out.println("------------查询操作------------");
System.out.println("linkedlist链表列表为:"+linkedlist);
//获取首位元素
Object obj1 = linkedlist.getFirst();
//获取指定位置的元素
Object obj2 = linkedlist.get(2);
//获取尾部的元素
Object obj3 = linkedlist.getLast();
//查询链表列表的长度(元素个数)
int a1= linkedlist.size();
System.out.println("首位元素为:"+obj1+";第三个元素为:"+obj2+";尾部元素为:"+obj3+";内部元素个数为:"+a1);
/**修改*/
System.out.println("------------修改操作------------");
System.out.println("修改之前的链表列表为:"+linkedlist);
linkedlist.set(1,"what you");
System.out.println("修改之后的链表列表为:"+linkedlist);
//遍历列表
//通过while方式来遍历
Iterator it1 = linkedlist.listIterator();
// while (it1.hasNext()){
// System.out.println("while:"+it1.next());
// }
//通过for循环方式来遍历
for(;it1.hasNext();){
System.out.println("for:"+it1.next());
}
/**删
* 在使用remove进行删除时,在进行删除操作的同时也会把此次删除的对象取出来
* remove(intdex int)在进行删除操作时,若index超出角标边界,则会抛异常IndexOutOfBoundsException
* 但是在使用poll类型进行操作时,若index超出角标边界,则会返回null
*
*/
System.out.println("------------删除操作------------");
System.out.println("删除开始的链表列表为:"+linkedlist);
//removeFirstOccurrence,在linkedlist中指定元素第一个出现
linkedlist.add(1,"now");
System.out.println("-----begin-------------"+"linkedlist="+linkedlist);
// linkedlist.removeFirstOccurrence("now");
//removeLastOccurrence,在linkedlist中指定元素第一个出现
linkedlist.removeLastOccurrence("now");
System.out.println("-----end---------------"+"linkedlist="+linkedlist);
//删除指定元素对象,有指定元素则删除,无指定元素则不操作,返回值为Boolean类型
Object obj5 = linkedlist.remove("?");
System.out.println("删除链表列表的元素为:"+obj5);
//删除指定索引位置的对象
linkedlist.remove(0);
//按索引删除首位元素,等价于linkedlist.remove(0);
linkedlist.removeFirst();
//按索引删除尾部元素
Object O = linkedlist.removeLast();
System.out.println(O);
//删除所有的元素(清空列表)
linkedlist.clear();
//remove和poll删除方法的比较
// linkedlist.remove(9);
Object obj9=linkedlist.poll();
System.out.println("obj9="+obj9);
System.out.println("删除结束的链表列表为:"+linkedlist);
//其他方法简介,不作说明
// E peek()
// 检索但不删除此列表的头(第一个元素)。
// E peekFirst()
// 检索但不删除此列表的第一个元素,如果此列表为空,则返回 null 。
// E peekLast()
// 检索但不删除此列表的最后一个元素,如果此列表为空,则返回 null 。
// E poll()
// 检索并删除此列表的头(第一个元素)。
// E pollFirst()
// 检索并删除此列表的第一个元素,如果此列表为空,则返回 null 。
// E pollLast()
// 检索并删除此列表的最后一个元素,如果此列表为空,则返回 null 。
// E pop()
// 从此列表表示的堆栈中弹出一个元素。
}
}
二.一个实际中操作 概念简单说明: 栈堆:元素先进后出,类似水杯装水; 队列:元素先进先出,类似水管输水; 需求:实现一个类型栈堆或队列的功能容器 1.封装一个类似类型栈堆或队列的功能容器
import java.util.LinkedList;
public class linkedlist_test1 {
/*实现类似栈堆或队列功能的容器*/
private LinkedList linkedlist;
//构造函数,一开始就生成一个链表队列linkedlist
linkedlist_test1(){
linkedlist = new LinkedList();
}
//定义向链表队列添加元素的功能
public void addElement(Object obj){
linkedlist.add(obj);
}
//定义一个类似栈堆功能(先进后出)
public Object ZhanDui(){
return linkedlist.removeFirst();
}
//定义一个类似队列功能(先进先出)
public Object DuiLie(){
return linkedlist.removeLast();
}
//定义一个判断linkedlsit是否为空的功能
public boolean isNull(){
return linkedlist.isEmpty();
}
2.调用封装好的类
public class Tset{
public static void main(String[] args){
linkedlist_test1 test = new linkedlist_test1();
String array[] = {"what","you","want"};
test.addElement(1);
test.addElement("you");
test.addElement("and");
test.addElement(array);
//栈堆功能
// while (!test.isNull()){
// System.out.println(test.DuiLie());
// }
//队列功能
for(;!test.isNull();){
System.out.println(test.ZhanDui());
}
}
}