Java容器---List
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的更多相关文章
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- 【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
- 【Java心得总结五】Java容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
- Java 容器(list, set, map)
java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...
- Java - 容器详解
一.ArrayList 长度可变数组,类似于c++ STL中的vector. 元素以线性方式连续存储,内部允许存放重复元素. 允许对元素进行随机的快速访问,但是向ArrayList中插入和删除元素的速 ...
- Java 容器:Collection 初探之 List
1 ///: JavaBasic//com.cnblogs.pattywgm.day1//CollectionTest.java 2 3 package com.cnblogs.pattywgm.da ...
- java容器---集合总结
思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...
- 3)Java容器
3)Java容器 Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...
- JAVA容器
JAVA容器 一.容器体系结构 java.util 二.迭代器Iterator<E> 迭代器是一种设计模式,可以遍历并选择序列中的对象,而开发人员并不需要了解该序列的底层结构.迭代器通常被 ...
- Java 容器相关知识全面总结
Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...
随机推荐
- 【转】《高级前端3.6》JavaScript多线程——Concurrent.Thread.js, WebWork
原文链接:http://www.cnblogs.com/woodk/articles/5199536.html JavaScript多线程,在HTML5 WebWork没出现之前很多人都是用Concu ...
- linux API函数大全
获取当前执行路径:getcwd1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAdd ...
- 获取串口映射的COM端口号
背景:近期由于项目需要,需要操作短信猫,当短信猫插入电脑后,会根据当前PC状况,映射COM口,这里需动态获取短信猫映射的COM端口号. 编程语言C#: 具体代码如下 public enum Hardw ...
- Sagit.Framework For IOS 开发框架入门开发教程1:框架下载与环境配置
背景: 前天开源了框架:开源:Sagit.Framework For IOS 开发框架 所以注定要追补一套开发教程了,所以尽量抽空了!!! 步骤 1:下载框架源码 GitHub:https://git ...
- Maven - Maven基础
1-下载及安装 1.1 - Maven - 项目管理利器 http://maven.apache.org/ Apache组织的开源项目. Maven是一个基于POM(Project Object Mo ...
- java 内部类 嵌套类
.markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" ...
- sharepoint 2013 使用SharePoint powershell 2013更改搜索server方法
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "DevSearch2013" Start-SPEnterpris ...
- 快速序列化组件MessagePack介绍
简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有 ...
- Linux小记 — Ubuntu自动化配置
前言 工欲善其事,必先利其器.经过多次的重复配置ubuntu开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本.服务器实例:ubuntu 16.04,技术栈:shell,python. ...
- 自学Zabbix1.1-简介
1. 初识Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决 方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利. ...