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

有两种类型的List:

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

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

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

  1 public class ListDemo {
  2
  3     /**
  4      * @param args
  5      */
  6     public static void main(String[] args) {
  7
  8         List list  = new ArrayList();
  9         methodDemo(list);
 10     }
 11     /*
 12      * 演示List特有的方法。
 13      */
 14     public static void methodDemo(List list){
 15
 16         //1,常规添加元素。
 17         list.add("abc1");
 18         list.add("abc2");
 19         list.add("abc3");
 20
 21         //2,插入元素。
 22 //      list.add(1,"hehe");
 23
 24         //3,删除。
 25 //      list.remove(1);
 26
 27         //4,获取。
 28 //      System.out.println(list.get(1));
 29 //      System.out.println(list.indexOf("abc3"));
 30
 31         //5,修改。
 32 //      list.set(1, "kk");
 33
 34
 35
 36         //取出集合中所有的元素。
 37         for (Iterator it = list.iterator(); it.hasNext();) {
 38             System.out.println("iterator:"+it.next());
 39         }
 40
 41         //list集合特有的取出方式。
 42         for (int i = 0; i < list.size(); i++) {
 43             System.out.println("get:"+list.get(i));
 44         }
 45
 46 //      System.out.println(list);
 47
 48
 49     }
 50 }

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

  1 public class ListIteratorDemo {
  2
  3     /**
  4      * @param args
  5      */
  6     public static void main(String[] args) {
  7
  8         List list = new ArrayList();
  9
 10         list.add("abc1");
 11         list.add("abc2");
 12         list.add("abc3");
 13         list.add("abc4");
 14
 15
 16         /*
 17         //在遍历的过程中,如果遍历到abc2,添加一个元素haha
 18         for (Iterator it = list.iterator(); it.hasNext();) {
 19             Object obj = it.next();//java.util.ConcurrentModificationException
 20
 21         //迭代过程中使用了使用了集合对象同时对元素进行操作。导致了迭代的不确定性。引发了该异常。
 22         //解决思想:在迭代过程中,想要执行一些操作,使用迭代器的方法就可以了。
 23
 24             if(obj.equals("abc2")){
 25                 list.add("haha");
 26             }
 27         }*/
 28
 29 //      使用list集合的特有的迭代器。ListIterator  通过List集合的方法listIterator()获取该迭代器对象。
 30 //      ListIterator可以实现在迭代过程中的增删改查。
 31         for (ListIterator it = list.listIterator(); it.hasNext();) {
 32             Object obj =  it.next();
 33
 34             if(obj.equals("abc2")){
 35                 it.add("haha");
 36             }
 37
 38         }
 39
 40         System.out.println(list);
 41     }
 42
 43 }
 44 

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

  1 public class LinkedListDemo {
  2
  3     /**
  4      * @param args
  5      */
  6     public static void main(String[] args) {
  7
  8         //1,创建一个链表对象。//演示 XXXFirst XXXLast。
  9         LinkedList link = new LinkedList();
 10
 11         //2,添加方法。
 12         link.addFirst("abc1");
 13         link.addFirst("abc2");
 14         link.addFirst("abc3");
 15
 16         //3,获取元素。
 17 //      System.out.println(link.getFirst());
 18 //      System.out.println(link.getFirst());
 19
 20         //4,删除元素。
 21 //      System.out.println(link.removeFirst());
 22 //      System.out.println(link.removeFirst());
 23
 24         //取出link中所有元素。
 25         while(!link.isEmpty())
 26             System.out.println(link.removeLast());
 27
 28     }
 29
 30 }

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

  1 public class LinkedListTest {
  2
  3     /**
  4      * @param args
  5      */
  6     public static void main(String[] args) {
  7
  8         /*
  9          * 练习: 请通过LinkedList实现一个堆栈,或者队列数据结构。
 10          * 堆栈:  先进后出。 First In Last Out   FILO.
 11          * 队列: 先进先出。First In First Out  FIFO.
 12          *
 13          */
 14
 15         //1,创建自定义的队列对象。
 16         MyQueue queue = new MyQueue();
 17
 18         //2,添加元素。
 19         queue.myAdd("abc1");
 20         queue.myAdd("abc3");
 21         queue.myAdd("abc4");
 22         queue.myAdd("abc5");
 23
 24         //3,获取所有元素。先进先出。
 25         while(!queue.isNull()){
 26             System.out.println(queue.myGet());
 27         }
 28
 29     }
 30
 31 }
 32
 33 /*
 34  * 描述一个队列数据结构。内部使用的是LinkedList。
 35  */
 36 class MyQueue{
 37
 38     private LinkedList link;
 39     MyQueue(){
 40         link = new LinkedList();
 41     }
 42
 43     /**
 44      * 添加元素的方法。
 45      */
 46     public void myAdd(Object obj){
 47         //内部使用的是linkedlist的方法。
 48         link.addFirst(obj);
 49     }
 50
 51     /**
 52      * 获取队列元素的方法。
 53      */
 54     public Object myGet(){
 55         return link.removeLast();
 56     }
 57
 58     /**
 59      * 集合中是否有元素的方法。
 60      */
 61     public boolean isNull(){
 62         return link.isEmpty();
 63     }
 64 }
 65
 66 

2018-01-03

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

转载于:https://www.cnblogs.com/zhuweiheng/p/8194740.html

Java容器---List相关推荐

  1. 基于JDK 1.8 的 Java 容器UML图

    2019独角兽企业重金招聘Python工程师标准>>> 这张图主要描述Java中容器框架,基于JDK 1.8 的. 网上现有的相关图都是基于老版本的JDK,而且也比较简陋. 图中省略 ...

  2. java容器有哪些如何使用_Java容器有哪些?

    网易面试: 问:Java容器有哪些,你聊一聊吧 Java容器: 数组,String,java.util下的集合容器 数组长度限制为 Integer.Integer.MAX_VALUE; String的 ...

  3. Java知识点总结(Java容器-EnumSet)

    Java知识点总结(Java容器-EnumSet) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaSet] EnumSet EnumSet是一个专为枚举 ...

  4. Java 容器学习之 HashMap

    前言 把 Java 容器的学习笔记放到 github 里了,还在更新~ 其他的目前不打算抽出来作为文章写,感觉挖的还不够深,等对某些东西理解的更深了再写文章吧 Java 容器 目录如下: Java 容 ...

  5. java 容器_我也来聊聊,JAVA容器与迭代器

    java的容器与迭代器是一个老生常谈的话题了. 本文旨在与大家分享一些关于双向链表与迭代器的运用小技巧,并希望本篇文章的内容能够在项目中给你带来帮助. Stack与LinkedList Stack是一 ...

  6. 后端学习 - Java容器

    文章目录 一 简介 二 底层数据结构总结 1 List 2 Set 3 Queue 4 Map 三 Collection 的子接口 List 1 ArrayList 与 Vector 2 ArrayL ...

  7. docker和java容器_使用Docker容器和Java EE进行持续交付

    docker和java容器 组织需要一种使应用程序交付快速,可预测和安全的方法,而诸如docker之类的容器所提供的敏捷性则可以帮助开发人员实现这一目标. 对于Java EE应用程序,这可以在容器中打 ...

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

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

  9. java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚

    之前在整理Redis的五大数据结构的时候,其中提到了list.set等知识点的时候,就想起来刚上大学那会的青涩时光,抱着一本Java生啃得时候得傻样,跟女朋友交流的时候,她说那你怎么不也顺便整理一下啊 ...

  10. Java知识点总结(Java容器-ArrayList)

    Java知识点总结(Java容器-ArrayList) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaList] ArrayList 底层实现是数组,访 ...

最新文章

  1. 【转】sed 简明教程
  2. iOS 数组中的模型去重
  3. Python中的*args和**kwargs是什么?该如何使用?
  4. 马斯克:4年内,SpaceX的第一艘火星飞船将发射
  5. 知乎改版api接口之scrapy自动登陆
  6. 电视光端机应用范围及故障维护问题介绍
  7. 大数据Hadoop(三十):Hadoop3.x的介绍
  8. 《大秦帝国》作者孙皓晖将现身杭州华为阅读·DigiX读书会
  9. 根据浏览器的默认语言来切换中英文页面
  10. 通过自定义镜像创建具有相同操作系统、应用程序和数据的百度云服务器BCC,有效提高交付效率!
  11. NYOJ-71 独木舟上的旅行
  12. 解决FTP上传时报错“父路径不存在”问题
  13. 《送东阳马生序》(节选)
  14. 【安富莱】【RL-TCPnet网络教程】第8章 RL-TCPnet网络协议栈移植(RTX)
  15. 永磁同步电机磁链观测Matlab仿真,基于磁链观测器的永磁同步电动机无传感器控制技术研究...
  16. 算法竞赛入门(2)学习笔记——循环结构程序设计
  17. FPGA实现CAN通信CRC校验
  18. java string中文_Java将String字符串的英文双引号批量转换成中文双引号
  19. K-Means算法解析
  20. 配置JPA属性 | MSCode微服务平台框架代码源码

热门文章

  1. jquery $.post 超时_详解如何实现前端jquery中的ajax方法,看这一篇就够了
  2. nyoj 410 how many ones?
  3. 一种排序NYOJ 8
  4. 【持续更新】实用算法小点总结(怕忘QAQ)
  5. android 多次点击事件,Android按钮onclick事件在多次单击后激发
  6. java实现avg函数_PostgreSQL avg()函数
  7. java jar包 资源_一个小坑:java如何访问依赖jar包中的资源文件
  8. axios token失效刷新token怎么重新请求_Token 刷新并发处理解决方案
  9. 函数重载与函数覆盖的区别(C++)
  10. Matplotlib库使用总结