`
god_sky
  • 浏览: 141752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ArrayList、Vector和LinkedList

    博客分类:
  • java
阅读更多

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

分享到:
评论

相关推荐

    ArrayList LinkedList Vector区别

    ArrayList LinkedList Vector 区别 ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 ...

    ArrayList Vector LinkedList 区别与用法.

    本文将深入探讨ArrayList、Vector和LinkedList三种集合类的特点与使用场景,帮助开发者更好地理解它们之间的差异。 #### 一、ArrayList与Vector **1. 存储方式** - **ArrayList** 和 **Vector** 都采用动态数组的...

    ArrayList、Vector、LinkedList 的区别.docx

    ArrayList、Vector、LinkedList 的区别 在 Java 集合框架中,ArrayList、Vector、LinkedList 是...ArrayList、Vector、LinkedList 三个类各有其特点和性能特征,在实际应用中,选择哪个类取决于具体的需求和性能要求。

    Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)

    Java容器集合(equals和hashCode+基础数据结构+ArrayList+Vector和LinkedList) Java容器集合是Java中的一种基础数据结构,用于存储和管理数据。其中,equals和hashCode方法是Java容器集合中两个非常重要的方法,...

    JDK1.6中Arraylist,Vector,LinkedList源码

    在Java编程语言中,ArrayList、Vector和LinkedList是三种常见的动态数组实现,它们都属于集合框架中的List接口。这里我们将深入探讨这三种数据结构的源码,理解它们的内部实现、性能特性和适用场景。 首先,...

    ArrayList LinkedList Vector性能对比

    ArrayList、LinkedList和Vector是三种常见的动态数组实现,它们各自有特定的特性和使用场景。这里我们将深入探讨这三个类的性能对比,以及它们在不同操作下的表现。 ArrayList是基于动态数组实现的,它提供了随机...

    ArrayList LinkedList Vector性能测试

    在Java编程语言中,ArrayList、LinkedList和Vector是三种常见的动态数组实现,它们都在java.util包中,用于存储和管理对象的集合。这三个类都实现了List接口,提供了多种操作方法,但它们在内部实现和性能特性上有所...

    Java 各种集合的区别ArrayList Vector LinkedList map区别

    今天,我们将深入了解 Java 中的集合类别,包括 ArrayList、Vector、LinkedList 和 Map 等。 ArrayList ArrayList 是一种基于数组的集合类别,它可以存储大量的数据。ArrayList 的特点是:它可以动态地增加或减少...

    比较ArrayList、LinkedList、Vector1

    List接口的实现类主要有ArrayList、LinkedList和Vector。 2. **ArrayList** - **实现原理**:ArrayList基于动态数组实现,它提供快速的按索引访问,因为数组支持直接通过索引获取元素。 - **添加和删除**:对于在...

    第8讲 对比Vector、ArrayList、LinkedList有何区别1

    在Java集合框架中,Vector、ArrayList和LinkedList都是List接口的实现,它们提供了有序集合的功能,允许根据位置进行元素的添加、删除和查找。然而,它们在设计和性能上有着显著的区别。 首先,Vector是Java早期...

    对比Vector、ArrayList、LinkedList1

    在Java集合框架中,Vector、ArrayList和LinkedList是三种常见的List接口实现类,它们各自具有不同的特点和适用场景。下面我们将详细对比这三个类的区别。 1. **Vector** - **线程安全**:Vector是线程安全的,因为...

    ArrayList-LinkedList--Vector-Map.zip_vector

    在Java编程语言中,`ArrayList`、`LinkedList`、`Vector`和`Map`是四种常用的集合类,它们各自有着不同的特性和用途。本篇文章将深入探讨这些数据结构及其使用场景。 首先,我们来了解`ArrayList`。`ArrayList`是`...

    浅谈 java中ArrayList、Vector、LinkedList的区别联系

    在Java编程语言中,ArrayList、Vector和LinkedList是三个常见的列表实现,它们都实现了List接口,因此都支持元素的增删改查操作。然而,它们在内部实现和性能特性上存在显著差异。 首先,ArrayList和Vector都是基于...

    ArrayList LinkList和vector的区别

    在选择LinkedList、ArrayList和Vector时,需要考虑以下几个因素: * 是否需要线程安全:如果需要线程安全,选择Vector;否则,选择ArrayList或LinkedList。 * 是否需要快速插入数据:如果需要快速插入数据,选择...

    ii0#book-3#ArrayList 、 LinkedList 、 Vector 的底层实现和区别1

    Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别ArrayList底层实际是采用数组实现的(并且该数组的类型是

    Vector 与ArrayList区别

    在 Java 集合框架中,`Vector` 和 `ArrayList` 是两种常用的动态数组实现。它们提供了灵活的数据存储方式,能够根据需要自动调整大小。然而,这两种类型的列表在同步性、性能等方面存在差异,这些差异决定了它们适用...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    ArrayList和Vector都是基于数组的实现,LinkedList是基于链表的实现。ArrayList和Vector的主要区别在于Vector使用了synchronized方法,线程安全,而ArrayList则没有。 ArrayList是Java中最常用的List实现类,它提供...

    比较Vector、ArrayList和hashtable hashmap

    - Vector 和 ArrayList 都实现了 List 接口,其中 Vector 是线程安全的,而 ArrayList 不是。ArrayList 在插入和查找性能上通常优于 Vector,因为 Vector 的同步操作会带来额外的性能开销。 - LinkedList 实现了 ...

    List实现类中的ArrayList、Vector、LinkedList

    可以把接口的好处5体现出来,如果ArrayList()不满足需求,直接更换就可以。 接口的好处: 1.程序的耦合度降低 2.更自然的使用多态 3.设计与实现完全分离 4.更容易搭建程序框架 5.更容易更换具体实现 ArrayList: ...

    Java中Vector与ArrayList的区别详解

    - `LinkedList`虽然在随机访问上不如`ArrayList`和`Vector`,但在插入和删除操作上表现更好,因为它只需要修改相邻元素的链接,时间复杂度为O(1),但遍历速度慢。 5. **使用场景**: - 如果在单线程环境中,且...

Global site tag (gtag.js) - Google Analytics