java 深入技术三(List)
List
ArrayList
List接口
List接口的父接口-Collection
List接口的重要子类- ArrayList
-LikedList
List接口不重要子类-Vector
java.lang.IndexOutOfBoundsException 越界异常
1)ArrayList arrayList=new ArrayList();
//获取集合中的元素
Object element=arrayList.get(Index);
使用for循环获取集合中的所有元素
int size=arrayList.size();
for(int i=0;i<size;i++){
Object ele =arrayList.get(i);
System.out.println(ele);
}
2)ArrayList 内部数据结构:数组
内存地址 e0 e1 e2 e3 e4
10
类当中封装了一个数组,内存中位置是连续的,数组每个元素占的空间都是一样的
内部结构数组的特点决定了ArrayList的特点
*可以直接获取指定索引位置的元素arrayList.get(index)
*可以直接在指定位置添加元素 arrayList.add(1,"蛋蛋3");
*可以直接在指定索引位置删除元素 arrayList.remove(index);
获取元素效率:非常高
添加元素效率:非常低
删除元素效率:非常低
3)LinkedList
内部结构:链表
链首
LinkedList各种操作的效率分析
获取集合中元素,是从链首依次获取才能获取到
可以添加指定索引位置添加元素
可以删除指定索引位置的元素
添加效率:不需要移动元素
删除效率:不需要移动元素
查询效率:获取指定位置的元素:从链首依次计数到指定位置的元素,相对ArrayList慢一些
//Collection接口中没有的方法
linkedList.add();
linkedList.add(index,Object);
linkedList.get(Index);
linkedList.addFirst(Objcet);
linkedList.addLast(Objcet);
最大索引位置:linkedList.size()-1
4)LinkedList 添加元素的过程
LinkedList list =new LinkedList();
Person p=new Person("蛋蛋",20);
list.add(p);
Person p2=new Person("蛋蛋2",30);
list.add(p2);
5)List综述
LIst列表的特性
元素有序:元素的添加顺序和遍历顺序相同
元素可重复:同一个元素可以多次添加到(List)集合里面
这两个特性实际上是子类ArrayList和LinkedList所具有的
可以是否多次添加null呢?可以
List中只能添加对象,不能添加基本数据类型
如果添加了基本数据类型,是装箱了
List接口特有的方法
ArrayList和LinkedList的共有方法决定List接口可以有的方法
void add (int index,Object o)
void addAll()
Objcet get()
Object set() //修改特定索引位置的元素
int indexOf()查询指定位置是否有改元素
int lastIndexOf()//查询元素最后一次出现的位置
6)ListIterator---list专有的迭代器
boolean hasNext()
Objcet next()
int nextIndex() //下一个元素的索引
boolean hasPrevious() //判断是否有前一个元素
Object previous() //取出前一个元素,并把指针移动到前一个元素
int previousIndex()
void add(Object o) //添加一个元素
void remove()
void set(Object o)//修改指针指向的当前元素
7)Vector
内部数据结构:数组
Vector是线程安全的,在早起的jdk版本中已经有了,自己担负了ArrayList和LinkedList两个类的作用,但各个操作的性能很低
Vector内部的数组满时,新数组长度增长100%
8)list练习
1.去除集合中的元素
新建一个集合list2.遍历list中的元素,如果list2有,就不添加,如果没有就添加进去
2.一个集合中存储有各种类型的数据,现要求把所有字符串类型的元素,串联成一个字符串,对所有数值类型的元素求和,对所有Person类型的元素年龄求和已经统计人数,如果是其他类型的元素,就输出到控制台
1.判断element为字符串类型的 element instanceof String ,使用StringBuild,把字符串串联在一次StringBuild stringBuild=new StringBuild();stringBuild.append(element);
2.判断element为数值类型 element instanceof Number ,然后把数值类型的转换为字符串类型的,再把字符串类型的转换为Double类型的
String numberStr=String.valueof(element);
Double doublevalueof=Double.parseDouble(numberStr);
totalNumer=+doublevalueof;
3.判断element为Person类型,统计人数
Person person=(Person)element;
int age=Person.getAge();
totalAge+=age;
personcount++;
9)堆栈(stack)
特点:先进后出
10)队列(queue)
特点:先进先出
java 深入技术三(List)的更多相关文章
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- Java基础扫盲系列(三)— Java内省技术
前言 Java内省技术属于Java基础体系的的一部分,但是很多人都不甚了解.笔者也是在学习Spring源码的过程中遇到该技术模块的.为了完善技术体系,本文将全面的学习该技术.在提到Java内省技术,就 ...
- java 深入技术八(内省)
1. javabean的软件设计思想 2.内省:封装了java反射,提供直接操作属性的Setter和getter方法的方法 3.核心API:BeanInfo java 的描述信息,Introspect ...
- 深入分析Java Web技术内幕(修订版)
阿里巴巴集团技术丛书 深入分析Java Web技术内幕(修订版)(阿里巴巴集团技术丛书.技术大牛范禹.玉伯.毕玄联合力荐!大型互联网公司开发应用实践!) 许令波 著 ISBN 978-7-121- ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...
- Java Web技术总结(目录)
来源于:http://www.jianshu.com/p/539bdb7d6cfa Java Web技术经验总结(一) Java Web技术经验总结(二) Java Web技术经验总结(三) Java ...
- Java单元测试技术1
另外两篇关于介绍easemock的文章:EasyMock 使用方法与原理剖析,使用 EasyMock 更轻松地进行测试 摘要:本文针对当前业软开发现状,先分析了WEB开发的技术特点和单元测试要解决的问 ...
- Java加密技术
相关链接: Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC Java加密技术(二)——对称加密DES&AES Java加密技术(三)——PBE算法 ...
- Java Servlet 技术简介
Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...
随机推荐
- iis 使用 LocalDB 报错:provider: SQL Network Interfaces, error: 50
在使用asp.net core读取localdb数据库时,报以下错误: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 S ...
- js和jquery如何获取图片真实的宽度和高度
按照插入的图片的尺寸来判断图片是横图还是竖图.然后判断过后给予不同的展示方式,下面为大家介绍下js和jquery如何获取图片真实的宽度和高度 1.什么时候需要获取图片真实的宽度和高度 在做pc网页 ...
- QString, string, int, char* 之间相互转换
这三种数据类型在实际运用中经常需要互相转换,那么这里小结下它们之间的转换方法: - Qstring & string Qt中封装的类十分强大,其成员函数数量之多比STD有过之而无不及,许多程序 ...
- 微信小程序之知乎日报
上一次的<微信小程序之小豆瓣图书>制作了一个图书的查询功能,只是简单地应用到了网络请求,其他大多数小程序应有的知识.而本次的示例是知乎日报,功能点比较多,页面也比上次复杂了许多.在我编写这 ...
- VS2010出现FileTracker : error FTK1011编译错误的解决办法
VS2010出现FileTracker : error FTK1011不知道是不是vs2010的一个bug,反正有人提交了. FileTracker : error FTK1011编译错误的解决办法有 ...
- bzoj 1004 Cards
1004: [HNOI2008]Cards Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有 多少种染色方案,Sun ...
- <<< Tomcat运行提示The server does not support version 3.0
导入了一个项目,运行Tomcat出现此错误大致由于当前导入项目服务器不支持J2ee版本 原因是导入项目的Tomcat版本是6.0,Tomcat 6.0仅支持到Servlet 2.5,而此时项目是3.0 ...
- 分析DH加密算法,一种适基于密钥一致协议的加密算法。
DH Diffie-Hellman算法(D-H算法),密钥一致协议.是由公开密钥密码体制的奠基人Diffie和Hellman所提出的一种思想.简单的说就是允许两名用户在公开媒体上交换信息以生成&quo ...
- 网络基础知识之 Ping
========================================假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上 ...
- win8.1系统的安装方法详细图解教程
win8.1系统的安装方法详细图解教程 关于win8.1系统的安装其实很简单 但是有的童鞋还不回 所以今天就抽空做了个详细的图解教程, 安装win8.1系统最好用U盘安装,这样最方便简单 而且系统安装 ...