List 承诺可以将元素维护在特定的序列中。List 接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。

有两种类型的List:

-----基本的ArrayList,它长于随机访问元素,但是在List的中阅插入和移除元素时较慢;

-----LinkedList,它通过代价较低的在List中间进行的插入和删除操作(链表的特性),提供了优化的顺序访 问。LinkedList在随机访问方面相对比较慢,但是它的特性集较ArrayList 更大。

(1)代码1:演示List特有方法

 public class ListDemo {

 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {

 		List list  = new ArrayList();
 		methodDemo(list);
 	}
 	/*
 	 * 演示List特有的方法。
 	 */
 	public static void methodDemo(List list){

 		//1,常规添加元素。
 		list.add("abc1");
 		list.add("abc2");
 		list.add("abc3");

 		//2,插入元素。
 //		list.add(1,"hehe");

 		//3,删除。
 //		list.remove(1);

 		//4,获取。
 //		System.out.println(list.get(1));
 //		System.out.println(list.indexOf("abc3"));

 		//5,修改。
 //		list.set(1, "kk");

 		//取出集合中所有的元素。
 		for (Iterator it = list.iterator(); it.hasNext();) {
 			System.out.println("iterator:"+it.next());
 		}

 		//list集合特有的取出方式。
 		for (int i = 0; i < list.size(); i++) {
 			System.out.println("get:"+list.get(i));
 		}

 //		System.out.println(list);

 	}
 }

(2)代码2:迭代器listIterator()演示

 public class ListIteratorDemo {

 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {

 		List list = new ArrayList();

 		list.add("abc1");
 		list.add("abc2");
 		list.add("abc3");
 		list.add("abc4");

 		/*
 		//在遍历的过程中,如果遍历到abc2,添加一个元素haha
 		for (Iterator it = list.iterator(); it.hasNext();) {
 			Object obj = it.next();//java.util.ConcurrentModificationException

 		//迭代过程中使用了使用了集合对象同时对元素进行操作。导致了迭代的不确定性。引发了该异常。
 		//解决思想:在迭代过程中,想要执行一些操作,使用迭代器的方法就可以了。

 			if(obj.equals("abc2")){
 				list.add("haha");
 			}
 		}*/

 //		使用list集合的特有的迭代器。ListIterator  通过List集合的方法listIterator()获取该迭代器对象。
 //		ListIterator可以实现在迭代过程中的增删改查。
 		for (ListIterator it = list.listIterator(); it.hasNext();) {
 			Object obj =  it.next();

 			if(obj.equals("abc2")){
 				it.add("haha");
 			}

 		}

 		System.out.println(list);
 	}

 }
 

(3)代码3:LinkedList方法演示

 public class LinkedListDemo {

 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {

 		//1,创建一个链表对象。//演示 XXXFirst XXXLast。
 		LinkedList link = new LinkedList();

 		//2,添加方法。
 		link.addFirst("abc1");
 		link.addFirst("abc2");
 		link.addFirst("abc3");

 		//3,获取元素。
 //		System.out.println(link.getFirst());
 //		System.out.println(link.getFirst());

 		//4,删除元素。
 //		System.out.println(link.removeFirst());
 //		System.out.println(link.removeFirst());

 		//取出link中所有元素。
 		while(!link.isEmpty())
 			System.out.println(link.removeLast());

 	}

 }

(4)通过LinkedList实现一个堆栈,或者队列数据结构。

 public class LinkedListTest {

 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {

 		/*
 		 * 练习: 请通过LinkedList实现一个堆栈,或者队列数据结构。
 		 * 堆栈:  先进后出。 First In Last Out   FILO.
 		 * 队列: 先进先出。First In First Out  FIFO.
 		 *
 		 */

 		//1,创建自定义的队列对象。
 		MyQueue queue = new MyQueue();

 		//2,添加元素。
 		queue.myAdd("abc1");
 		queue.myAdd("abc3");
 		queue.myAdd("abc4");
 		queue.myAdd("abc5");

 		//3,获取所有元素。先进先出。
 		while(!queue.isNull()){
 			System.out.println(queue.myGet());
 		}

 	}

 }

 /*
  * 描述一个队列数据结构。内部使用的是LinkedList。
  */
 class MyQueue{

 	private LinkedList link;
 	MyQueue(){
 		link = new LinkedList();
 	}

 	/**
 	 * 添加元素的方法。
 	 */
 	public void myAdd(Object obj){
 		//内部使用的是linkedlist的方法。
 		link.addFirst(obj);
 	}

 	/**
 	 * 获取队列元素的方法。
 	 */
 	public Object myGet(){
 		return link.removeLast();
 	}

 	/**
 	 * 集合中是否有元素的方法。
 	 */
 	public boolean isNull(){
 		return link.isEmpty();
 	}
 }

2018-01-03

内容来自传智播客和java编程思想

Java容器---List的更多相关文章

  1. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  2. 【Java心得总结六】Java容器中——Collection

    在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...

  3. 【Java心得总结五】Java容器上——容器初探

    在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...

  4. Java 容器(list, set, map)

    java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...

  5. Java - 容器详解

    一.ArrayList 长度可变数组,类似于c++ STL中的vector. 元素以线性方式连续存储,内部允许存放重复元素. 允许对元素进行随机的快速访问,但是向ArrayList中插入和删除元素的速 ...

  6. Java 容器:Collection 初探之 List

    1 ///: JavaBasic//com.cnblogs.pattywgm.day1//CollectionTest.java 2 3 package com.cnblogs.pattywgm.da ...

  7. java容器---集合总结

    思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...

  8. 3)Java容器

    3)Java容器   Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...

  9. JAVA容器

    JAVA容器 一.容器体系结构 java.util 二.迭代器Iterator<E> 迭代器是一种设计模式,可以遍历并选择序列中的对象,而开发人员并不需要了解该序列的底层结构.迭代器通常被 ...

  10. Java 容器相关知识全面总结

    Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...

随机推荐

  1. 分布式版本控制系统 Git 教程

    简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...

  2. KD-tree详解

    转载自:http://blog.csdn.NET/zhjchengfeng5/article/details/7855241 首先来一个问题: 给定平面上一个点集 E ,还有一个定点 V ,怎么在一群 ...

  3. 分布式系统中的必备良药 —— RPC

    阅读目录 前言 成熟的解决方案 剖析 性能测试 结语 一.前言 在上一篇分布式系统系列中<分布式系统中的必备良药 —— 服务治理>中阐述了服务治理的一些概念,那么与服务治理配套的必然会涉及 ...

  4. 浏览器抓包(post)

    谁能想到我写的第一个wp竟然是个web题??? 以Geek2017_Buy me a Tesla 为例 来看看题目 emmmm有理想还是很好的,火狐打开(事实证明FF对web题是最友好的) 能点的地方 ...

  5. Apache OFBiz源码解读之MVC模型

    节点解析 request-map 你可以将其理解为controller的配置,如果你了解或使用过struts的配置或springmvc的annotation,就会发现这个定义跟它们是很相似的: [ht ...

  6. C(8)

    C语言位运算与文件 本章引言: 在不知不觉中我们的C高速入门系列已经慢慢地接近尾声了,而在这一节中,我们会对 C语言中的位运算和文件进行解析,相信这两章对于一些人来说是陌生的,由于非常多 老师都会跳过 ...

  7. MySQL Study之--MySQL schema_information数据库

    MySQL Study之--MySQL schema_information数据库       information_schema数据库是在mysql的版本号5.0之后产生的,一个虚拟数据库,物理上 ...

  8. nyoj 123 士兵杀敌(四)【树状数组】+【插线问点】

    树状数组有两种情况:插点问线和插线问点.这道题是插线问点. 由于树状数组最简单的作用是计算1~x的和,所以给出(a, b. c).表示(a,b)区间添加c, 那我们仅仅须要在a点原来的基础上添加c,然 ...

  9. 配置nginx以获取真实的客户端ip地址

    当我们使用了nginx来转发客户端的请求以后,tomcat是无法正确获取到客户端的ip地址的,而是获取到配置了nginx的那台服务器的ip地址.因为tomcat所接收到的请求是通过nginx发出来的( ...

  10. jspsmart(保存文件)+poi(读取excel文件)操作excel文件

    写在前面: 项目环境:jdk1.4+weblogic 需求:能上传excel2003+2007 由于项目不仅需要上传excel2003,还要上传excel2007,故我们抛弃了jxl(只能上传exce ...