java集合之列表:ArrayList、Vector、LinkedList

  1 package com.jdk7.chapter4;
  2
  3 import java.util.ArrayList;
  4 import java.util.LinkedList;
  5 import java.util.List;
  6 import java.util.ListIterator;
  7 import java.util.Stack;
  8 import java.util.Vector;
  9 /**
 10  * java中集合的形式一》列表(有序允许重复)
 11  * 列表的三种表现形式》ArrayList、Vector、LinkedList
 12  * 其中Stack extends Vector
 13  * 另: List的遍历器(ListIterator)可以操作列表元素
 14  * @author Administrator
 15  *
 16  */
 17 public class ListTest {
 18     public static void init(List list){
 19         if(list!=null){
 20             list.add("aaa");
 21             list.add("bbb");
 22             list.add("ddd");
 23             list.add("eee");
 24         }
 25     }
 26
 27     public static void printList(List list){
 28         if(list!=null){
 29             for(int i=0;i<list.size();i++){
 30                 System.out.print(list.get(i)+" ");
 31             }
 32         }
 33         System.out.println();
 34     }
 35
 36     public static void arrayList(){
 37         List arrayList = new ArrayList();
 38         init(arrayList);
 39         printList(arrayList);
 40     }
 41
 42     public static void vector(){
 43         List list = new Vector();
 44         init(list);
 45         printList(list);
 46     }
 47
 48     public static void linkedList(){
 49         List list = new LinkedList();
 50         init(list);
 51         printList(list);
 52     }
 53
 54     public static void main(String[] args) {
 55         System.out.println("===============ArrayList集合==================");
 56         arrayList();
 57         System.out.println("===============Vector集合==================");
 58         vector();
 59         System.out.println("===============LinkedList集合==================");
 60         linkedList();
 61         System.out.println("===============操作ArrayList集合元素==================");
 62         List list = new ArrayList();
 63         list.add("1111");
 64         list.add("2222");
 65         list.add("3333");
 66         list.add(0, "eeee");
 67         list.indexOf("2222");
 68         printList(list);
 69         System.out.println("=================================");
 70         List list1 = new ArrayList();
 71         list1.addAll(list);
 72         list1.add("bbbb");
 73         printList(list1);
 74         System.out.println("数组list1包含数组list: "+list1.containsAll(list));
 75         list1.set(1, "vvvv");
 76         printList(list1);
 77         System.out.println("===============List的遍历器实现对集合元素的操作==================");
 78         ListIterator listIt = list.listIterator();
 79         System.out.print("正向遍历结果: ");
 80         while(listIt.hasNext()){
 81             System.out.print(listIt.next()+" ");
 82         }
 83         System.out.println();
 84         System.out.print("逆向遍历结果: ");
 85         while(listIt.hasPrevious()){
 86             System.out.print(listIt.previous()+" ");
 87         }
 88         System.out.println();
 89         //在遍历器所在位置对数组元素进行操作,遍历器位置通过ListIterator的next()和previous()进行变动
 90         listIt.next();
 91         listIt.add("ffff");
 92         printList(list);
 93         System.out.println("=================================");
 94         listIt.next();
 95         listIt.remove();
 96         printList(list);
 97         System.out.println("===============Vector类的子类Stack类操作集合元素==================");
 98         Stack myStack =  new Stack();
 99         myStack.push("hhhh");
100         myStack.push("eeee");
101         myStack.push("llll");
102         myStack.push("oooo");
103         printList(myStack);
104         System.out.println("================堆栈尾部元素及堆栈所有元素=================");
105         System.out.println("堆栈尾部元素: "+myStack.peek());
106         printList(myStack);
107         System.out.println("================弹出的堆栈尾部元素及堆栈所有元素=================");
108         System.out.println("弹出的堆栈尾部元素: "+myStack.pop());
109         printList(myStack);
110         System.out.println("================操作LinkedList集合元素=================");
111         LinkedList linkedList = new LinkedList();
112         linkedList.addAll(list);
113         printList(linkedList);
114         System.out.println("在集合头部插入‘start‘");
115         linkedList.addFirst("start");
116         printList(linkedList);
117         System.out.println("在集合尾部插入‘end‘");
118         linkedList.addLast("end");
119         printList(linkedList);
120         System.out.println("删除集合头部元素‘start‘");
121         linkedList.removeFirst();
122         printList(linkedList);
123         System.out.println("删除集合尾部元素‘end‘");
124         linkedList.removeLast();
125         printList(linkedList);
126         System.out.println("集合首尾插入元素‘aaaa‘");
127         linkedList.addFirst("aaaa");
128         linkedList.addLast("aaaa");
129         printList(linkedList);
130         System.out.println("删除元素‘aaaa‘");
131         linkedList.remove("aaaa");
132         printList(linkedList);
133     }
134 }
135
136
137 执行结果为:
138 ===============ArrayList集合==================
139 aaa bbb ddd eee
140 ===============Vector集合==================
141 aaa bbb ddd eee
142 ===============LinkedList集合==================
143 aaa bbb ddd eee
144 ===============操作ArrayList集合元素==================
145 eeee 1111 2222 3333
146 =================================
147 eeee 1111 2222 3333 bbbb
148 数组list1包含数组list: true
149 eeee vvvv 2222 3333 bbbb
150 ===============List的遍历器实现对集合元素的操作==================
151 正向遍历结果: eeee 1111 2222 3333
152 逆向遍历结果: 3333 2222 1111 eeee
153 eeee ffff 1111 2222 3333
154 =================================
155 eeee ffff 2222 3333
156 ===============Vector类的子类Stack类操作集合元素==================
157 hhhh eeee llll oooo
158 ================堆栈尾部元素及堆栈所有元素=================
159 堆栈尾部元素: oooo
160 hhhh eeee llll oooo
161 ================弹出的堆栈尾部元素及堆栈所有元素=================
162 弹出的堆栈尾部元素: oooo
163 hhhh eeee llll
164 ================操作LinkedList集合元素=================
165 eeee ffff 2222 3333
166 在集合头部插入‘start‘
167 start eeee ffff 2222 3333
168 在集合尾部插入‘end‘
169 start eeee ffff 2222 3333 end
170 删除集合头部元素‘start‘
171 eeee ffff 2222 3333 end
172 删除集合尾部元素‘end‘
173 eeee ffff 2222 3333
174 集合首尾插入元素‘aaaa‘
175 aaaa eeee ffff 2222 3333 aaaa
176 删除元素‘aaaa‘
177 eeee ffff 2222 3333 aaaa 

原文地址:https://www.cnblogs.com/celine/p/8455401.html

时间: 2024-08-17 15:22:31

java集合之列表:ArrayList、Vector、LinkedList的相关文章

Java集合 之List(ArrayList、LinkedList、Vector、Stack)理解(new)

一. ArrayList底层实现原理 对比 和Vector不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList. 总结:(01) ArrayList 实际上是通过一个数组去保存数据的.当我们构造ArrayList时:若使用默认构造函数,则ArrayList的默认容量大小是10.(02) 当ArrayList容量不足以容纳全部元素时,ArrayList会重新设置容量:新的容量="(

Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和

Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis

Java集合详解2:LinkedList和Queue

Java集合详解2:LinkedList和Queue 今天我们来探索一下LinkedList和Queue,以及Stack的源码. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https://h2pl.github.io/2018/05/09/collection2 更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a724888 我的个

ArrayList,Vector,LinkedList的存储性能和特征

ArrayListh和Vector都是采用数组的方式来存储数据,其中ArrayList是线程不安全的,Vector是线程安全,所以ArrayList的性能要比Vector的性能好一些,而LinkedList采用的双向链表来实现数据的存储,而且是线程不安全的,而且LinkedList提供了一些方法,使得LinkedList可以被当做栈和队列来使用.因为ArrayList和Vector采用的数组的方式来实现存储数据,所以查询数据比较快捷,但是进行数据增删操作比较慢些,但是LinkedList采用的事

【Java集合源码剖析】LinkedList源码剖析

转载请注明出处:http://blog.csdn.net/ns_code/article/details/35787253 LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全的,只在单线程下适合使用. LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆. Linked

java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)

说起集合,我们会潜意识里想到另外一个与之相近的名词——数组,OK!两者确实有相似之处,但也正是这点才是我们应该注意的地方,下面简单列出了两者的区别(具体功能的不同学习这篇文章后就会明白了): 数组 长度固定 既可以存储基本数据类型,也能存储引用数据类型 一个数组中的元素类型必一致 集合 长度可变 只能存储引用数据类型 一个集合中的元素类型可以是任意的引用类型 一.集合概述 Collection<E> 父接口 List<E> 子接口 ArrayList<E>类 Vecto

java语言基础--集合学习,ArrayList和Linkedlist

Collection<E>接口 这个接口是集合框架最顶级的接口,该接口扩展了Iterable接口,这意味着所有的集合类fore-each风格进行遍历. ArrayList 与 Linkedlist 区别: ArrayList是实现了基于动态数组,LinkedList基于链表.对于随机访问get和set,ArrayList性能要优于LinkedList,因为LinkedList要移动指针.对于删除和新增LinkedList性能要优于ArrayList,因为ArrayList要移动数据. Arra

java学习笔记--类ArrayList和LinkedList的实现

在集合Collection下的List中有两个实现使用的很频繁,一个是ArrayList,另一个是LinkedList,在学习中肯定都会有这样的疑问:什么时候适合使用ArrayList,什么时候用LinkedList?这时,我们就需要了解ArrayList和LinkedList的底层的实现,下面,为了更好的了解它们具体是怎样实现的,我们来写自己的ArrayList 和LinkedList. ArrayList底层是基于数组实现的,数组在内存中是存储在连续的存储单元中,在数据查找的时候比较快,适用