Java容器---List
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相关推荐
- 基于JDK 1.8 的 Java 容器UML图
2019独角兽企业重金招聘Python工程师标准>>> 这张图主要描述Java中容器框架,基于JDK 1.8 的. 网上现有的相关图都是基于老版本的JDK,而且也比较简陋. 图中省略 ...
- java容器有哪些如何使用_Java容器有哪些?
网易面试: 问:Java容器有哪些,你聊一聊吧 Java容器: 数组,String,java.util下的集合容器 数组长度限制为 Integer.Integer.MAX_VALUE; String的 ...
- Java知识点总结(Java容器-EnumSet)
Java知识点总结(Java容器-EnumSet) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaSet] EnumSet EnumSet是一个专为枚举 ...
- Java 容器学习之 HashMap
前言 把 Java 容器的学习笔记放到 github 里了,还在更新~ 其他的目前不打算抽出来作为文章写,感觉挖的还不够深,等对某些东西理解的更深了再写文章吧 Java 容器 目录如下: Java 容 ...
- java 容器_我也来聊聊,JAVA容器与迭代器
java的容器与迭代器是一个老生常谈的话题了. 本文旨在与大家分享一些关于双向链表与迭代器的运用小技巧,并希望本篇文章的内容能够在项目中给你带来帮助. Stack与LinkedList Stack是一 ...
- 后端学习 - Java容器
文章目录 一 简介 二 底层数据结构总结 1 List 2 Set 3 Queue 4 Map 三 Collection 的子接口 List 1 ArrayList 与 Vector 2 ArrayL ...
- docker和java容器_使用Docker容器和Java EE进行持续交付
docker和java容器 组织需要一种使应用程序交付快速,可预测和安全的方法,而诸如docker之类的容器所提供的敏捷性则可以帮助开发人员实现这一目标. 对于Java EE应用程序,这可以在容器中打 ...
- 【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上--容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
- java compareto方法怎么排序的_很简单却能让你面试头疼得Java容器,这里从源码给你解释清楚
之前在整理Redis的五大数据结构的时候,其中提到了list.set等知识点的时候,就想起来刚上大学那会的青涩时光,抱着一本Java生啃得时候得傻样,跟女朋友交流的时候,她说那你怎么不也顺便整理一下啊 ...
- Java知识点总结(Java容器-ArrayList)
Java知识点总结(Java容器-ArrayList) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaList] ArrayList 底层实现是数组,访 ...
最新文章
- 【转】sed 简明教程
- iOS 数组中的模型去重
- Python中的*args和**kwargs是什么?该如何使用?
- 马斯克:4年内,SpaceX的第一艘火星飞船将发射
- 知乎改版api接口之scrapy自动登陆
- 电视光端机应用范围及故障维护问题介绍
- 大数据Hadoop(三十):Hadoop3.x的介绍
- 《大秦帝国》作者孙皓晖将现身杭州华为阅读·DigiX读书会
- 根据浏览器的默认语言来切换中英文页面
- 通过自定义镜像创建具有相同操作系统、应用程序和数据的百度云服务器BCC,有效提高交付效率!
- NYOJ-71 独木舟上的旅行
- 解决FTP上传时报错“父路径不存在”问题
- 《送东阳马生序》(节选)
- 【安富莱】【RL-TCPnet网络教程】第8章 RL-TCPnet网络协议栈移植(RTX)
- 永磁同步电机磁链观测Matlab仿真,基于磁链观测器的永磁同步电动机无传感器控制技术研究...
- 算法竞赛入门(2)学习笔记——循环结构程序设计
- FPGA实现CAN通信CRC校验
- java string中文_Java将String字符串的英文双引号批量转换成中文双引号
- K-Means算法解析
- 配置JPA属性 | MSCode微服务平台框架代码源码
热门文章
- jquery $.post 超时_详解如何实现前端jquery中的ajax方法,看这一篇就够了
- nyoj 410 how many ones?
- 一种排序NYOJ 8
- 【持续更新】实用算法小点总结(怕忘QAQ)
- android 多次点击事件,Android按钮onclick事件在多次单击后激发
- java实现avg函数_PostgreSQL avg()函数
- java jar包 资源_一个小坑:java如何访问依赖jar包中的资源文件
- axios token失效刷新token怎么重新请求_Token 刷新并发处理解决方案
- 函数重载与函数覆盖的区别(C++)
- Matplotlib库使用总结