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());
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值