当前位置: 代码迷 >> Web前端 >> ArrayList、Vector跟LinkedList
  详细解决方案

ArrayList、Vector跟LinkedList

热度:613   发布时间:2012-08-22 09:50:35.0
ArrayList、Vector和LinkedList

package com.sky.arrayset;
//ArrayList、Vector和LinkedList
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Stack;
import java.util.Vector;
/**
?* 演示各种List的使用
?* @author sky
?*List能维护元素的次序,它允许元素重复
?*/
public abstract class TestList {
?
?/**初始化一个List*/
?public static void init(List list){
??if(list!=null){
???list.add("aaa");
???list.add("ccc");
???list.add("bbb");
???list.add("eee");
???list.add("ddd");
??}
?}
?
?/**输出List的内容*/
?public static void output(List list){
??if(list!=null){
???//根据列表下标遍历,使用list.size()获取列表中元素的个数
???for(int i=0;i<list.size();i++){
????System.out.println("\n\t遍历list:"+list.get(i));
???}
???//或者用迭代器遍历
???Iterator it=list.iterator();
???Object value=null;
???while(it.hasNext()){
????value=it.next();
???}
??}
??System.out.println();
?}
?
?/**使用ArrayList*/
?public static void testArrayList(){
??List list=new ArrayList();
??init(list);
??System.out.println("\n\t使用ArrayList:");
??output(list);
?}
?
?
?/**使用Vector*/
?public static void testVector(){
??List list=new Vector();
??init(list);
??System.out.println("\n\t使用Vector:");
??output(list);
?}
?
?/**使用LinkedList*/
?public static void testLinkedList(){
??List list=new LinkedList();
??init(list);
??System.out.println("\n\t使用LinkedList");
??output(list);
?}
?
?public static void main(String[] args){
??TestList.testArrayList();
??TestList.testVector();
??TestList.testLinkedList();
??
??List list=new ArrayList();
??init(list);
??//List支持元素重复
??list.add("aaa");
??list.add("bbb");
??System.out.println("\n\t插入原aaa,bbb后:");
??output(list);
??//指定元素出入的位置
??list.add(1, "fff");
??System.out.println("在下标为1处插入fff后:");
??output(list);
??
??List list2=new ArrayList();
??list2.add("ggg");
??list2.add("hhh");
??//将另一个列表中的元素插入到列表中
??list.addAll(list2);
??System.out.println("添加list2大元素后:");
??output(list);
??
??//判断列表是否包含某一元素
??//通过元素的equals方法,判断元素是否相等
??System.out.println("\n\t list包含aaa?"+list.contains("aaa"));
??//判断列表中是否包含了另一个列表中的所有元素
??System.out.println("\n\t list包含list2中的所有元素?"+list.containsAll(list2));
??//定位一个元素在列表中最先出现的位置
??System.out.println("\n\t aaa在list中第一次出现的位置:"+list.indexOf("aaa"));
??//定位一个元素在列表中最后出现的位置
??System.out.println("\n\t aaa在list中最后一次出现的位置:"+list.lastIndexOf("aaa"));
??
??
??//更新列表中某个位置的元素值
??list.set(2, "xxx");
??System.out.println("\n\t更新位置为2的元素为xxx后:");
??output(list);
??//删除列表中的某个元素,只删除第一次出现的出现的那个
??list.remove("aaa");
??System.out.println("\n\t删除元素aaa后");
??output(list);
??//删除列表中指定的位置的元素
??list.remove(1);
??System.out.println("\n\t删除下标为1的元素后");
??output(list);
??//删除列表中其他元素,只保留另一个列表中包含的元素
??list.retainAll(list2);
??System.out.println("\n\t删除list2包含以外的元素后");
??output(list);
??//删除列表中在另一个列表中也包含了的元素
??list.removeAll(list2);
??System.out.println("\n\t删除list2包含的元素后:");
??output(list);
??
??list.clear();//清空列表
??//判断列表是否有数据
??System.out.println("\n\t清空List后,list为空吗?"+list.isEmpty());
??init(list);
??//用列表中的某些元素构造一个新的列表
??list2=list.subList(1, 3);
??System.out.println("\n\t用list的第1个到第3个元素构造一个新的List:");
??output(list2);
??
??//用List特有的遍历器ListIterator遍历列表
??//与普通的Iterator不用,它允许从两个方向遍历列表
??ListIterator listIt=list.listIterator();
??System.out.println("\n\t正向遍历列表");
??while(listIt.hasNext()){
???System.out.println("\n\t正向遍历列表? :"+listIt.next());
??}
??System.out.println("\n\t");
??System.out.println("\n\t反向遍历列表");
??while(listIt.hasPrevious()){
???System.out.println("\n\t反向遍历列表:"+listIt.previous());
??}
??System.out.println();
??//也可以使用ListIterator从list中间插入和删除元素
??//只能在遍历当前位置进行添加和删除
??listIt.add("newadd");
??System.out.println("\n\t用ListIterator往列表中添加的元素newadd后:");
??output(list);
??listIt.next();
??listIt.remove();
??System.out.println("\n\t用ListIterator删除列表中元素后:");
??output(list);
??
??
??LinkedList linklist=new LinkedList();
??init(linklist);
??//添加元素到列表表头
??linklist.addFirst("fff");
??System.out.println("把fff放到列表表头后:");
??output(linklist);
??//添加元素到表尾
??linklist.addLast("eee");
??System.out.println("把eee放到列表尾后:");
??output(linklist);
??
??System.out.println("\n\t列表头元素:"+linklist.getFirst());
??System.out.println("\n\t列表尾元素:"+linklist.getLast());
??linklist.removeFirst();//删除列表表头的元素
??System.out.println("删除列表头元素后:");
??output(linklist);
??linklist.removeLast();//删除列表尾的元素
??System.out.println("删除列表的尾元素后:");
??output(linklist);
??
??Stack myStack=new Stack();
??//插入元素,是插入到尾部
??myStack.push("aaa");
??myStack.push("bbb");
??myStack.push("ccc");
??myStack.push("ddd");
??myStack.push("aaa");
??myStack.push("ddd");
??System.out.println("\n\t堆栈中的元素师:");
??output(myStack);
??System.out.println("\n\t堆栈尾部的元素:"+myStack.peek());
??System.out.println("\n\t堆栈头部的元素:"+myStack.pop());
?}
}

  相关解决方案