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 ...
随机推荐
- C#开发Windows窗体应用程序的步骤
使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...
- 数据结构与算法(C/C++版)【绪论/线性表】
声明:数据结构与算法系列博文参考了<天勤高分笔记>.<王道复习指导>.C语言中文网.非商业用途,仅为学习笔记总结! 第一章<绪论> 一.基本概念及入门常识 /// ...
- 浅谈canvas绘画王者荣耀--雷达图
背景: 一日晚上下班的我静静的靠在角落上听着歌,这时"滴!滴!"手机上传来一阵qq消息.原来我人在问王者荣耀的雷达图在页面上如何做出来的,有人回答用canvas绘画.那么问题来了, ...
- 自己动手编写IOC框架(四)
终于到了激动人心的时刻了,首先感谢小伙伴们的阅读,如果能多点评论,多点探讨就更好了,没有交流让我觉得我写的东西只有标题有点价值,内容只是在浪费大家的时间.为了泪滴下周能写下一个框架orm,请小伙伴们能 ...
- 项目实战11—企业级nosql数据库应用与实战-redis的主从和集群
企业级nosql数据库应用与实战-redis 环境背景:随着互联网2.0时代的发展,越来越多的公司更加注重用户体验和互动,这些公司的平台上会出现越来越多方便用户操作和选择的新功能,如优惠券发放.抢红包 ...
- 使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
作者:陈希章 发表于 2017年12月14日 在上一篇 使用PowerApps快速构建基于主题的轻业务应用 -- 入门篇 中,我用了三个实际的例子演示了如何快速开始使用PowerApps构建轻业务应用 ...
- Taffy Web开发,Python Flask实践详解
1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 2. 实现细节 页面使用Python Flask +Bootstrap开发,还 ...
- flask-login使用笔记
看外国文献的中文翻译 翻译的程度有的让人会疯,翻译最好的状态是异译 直译会显的很生硬 看起来确实难过:所以在看的时候,建议都看外国文献吧,或者自己用谷歌翻译,感觉比一些翻译的博客准多了: 在使用fl ...
- NOIP2017提高组初赛解析
首发于订阅号 嗨编程,这是一个以嗨为目标的编程订阅号(仅仅是目标而已),扫码可关注,不定期更. 解析中引用了一张关于排序的总结课件图片,来源网络,如果侵权,请联系本人删除(没钱付版权费)
- react.js - 基于create-react-app的打包后文件根路径修改
用create-react-app脚手架搭建的react项目 使用 npm run build 之后生成的打包文件只能在根目录访问 这样放在服务器目录就访问不到了 报错为: 手动更改index.htm ...