Java数组列表
来源:互联网 发布:windows live id格式 编辑:程序博客网 时间:2024/04/28 19:02
通过对数组的学习,我们了解到数组的三大特点,即:数据存储的连续性、数据类型的一致性、数据大小的固定性。这也正导致了数组在做数据存储时有着不可避免的局限性。于是乎,强大的Java语言为程序猿们提供了一个实现可变数组的类——ArrayList。
1.ArrayList的源码分析
①ArrayList的父类及已实现的接口
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable//继承AbstractList类
②ArrayList的属性
大小属性:
/** * The size of the ArrayList (the number of elements it contains). *数组列表的大小(包含元素数) * @serial */private int size;
数组属性:
/** * Shared empty array instance used for empty instances. * 用于空实例的共享空数组实例 */private static final Object[] EMPTY_ELEMENTDATA = {};
③简介ArrayList常用方法(API文档介绍)
ArrayList实现List接口、底层使用数组保存所有元素(private transient Object[] elementData; ),故其操作基本上是对数组的操作。
public void add(int index,E element);
//将指定的元素插入此列表中的指定位置(添加数据)
public E get(int index)//返回此列表中指定位置上的元素(访问数据)public int size();//返回此列表中的元素数(获取元素个数)public E set(int index,E element);//用指定的元素替代此列表中指定位置上的元素(修改数据)public void remove(int index);//移除此列表中指定位置上的元素(删除数据)public void clear();//移除此列表中的所有元素。此调用返回后,列表将为空(清空列表)public boolean isEmpty();//如果此列表中没有元素,则返回 true(判断元素是否存在列表中)
2.ArrayList常用方法
①存储:
/** * {@inheritDoc} * * <p>This implementation always throws an * 这个实现总是抛出一个 * {@code UnsupportedOperationException}. * 不支持操作异常(当不支持请求的操作时,抛出该异常) * * @throws UnsupportedOperationException {@inheritDoc} * 不支持操作异常 * @throws ClassCastException {@inheritDoc} * 强制转换异常 * @throws NullPointerException {@inheritDoc} * 空指针异常 * @throws IllegalArgumentException {@inheritDoc} * 非法数据异常 * @throws IndexOutOfBoundsException {@inheritDoc} * 下标越界异常public void add(int index, E element) { throw new UnsupportedOperationException();}
②访问:
/** * {@inheritDoc} * * @throws IndexOutOfBoundsException {@inheritDoc} * 下标越界异常 */abstract public E get(int index);
③获取元素个数;
④修改数据:
/** * {@inheritDoc} * * <p>This implementation always throws an * {@code UnsupportedOperationException}. * * @throws UnsupportedOperationException {@inheritDoc} * @throws IndexOutOfBoundsException {@inheritDoc} */public E remove(int index) { throw new UnsupportedOperationException();}
⑤清空列表:
/** * Removes all of the elements from this list (optional operation). * 移除列表中所有元素(可选操作) * The list will be empty after this call returns. * 此调用返回后,列表将为空 * * <p>This implementation calls {@code removeRange(0, size())}. * * <p>Note that this implementation throws an * 注意,这个实现抛出了一个 * {@code UnsupportedOperationException} unless {@code remove(int * 不支持操作异常除非remve() * index)} or {@code removeRange(int fromIndex, int toIndex)} is * 或removeRange()方法 * overridden. * 被重写 * * @throws UnsupportedOperationException if the {@code clear} operation * is not supported by this list */public void clear() { removeRange(0, size());}
⑥判断元素是否存在列表中。
3.ArrayList+泛型
在类定义的时候,某种类型不确定,则可以使用泛型。泛型代表的是基本类型以外的类型,常用的指代关系是——E : 元素;K :键;V :值 。
存在泛型的情况:
public class MyArrayList extends ArrayList{
public static void main(String [] args){
//String为非基本类型
MyArrayList myArrayList=new MyArrayList();
myArrayList.add(0, “afaf”);
myArrayList.add(1, “dewd”);
myArrayList.add(2, “ad”);
myArrayList.add(3, “afad”);
myArrayList.remove(3);
System.out.println(myArrayList);
}
}
4.ArrayList优缺点
优势——
①支持自动改变大小的功能(最大的优势);
②利用泛型可以用于存储不同非基本类型的数据;
③可以灵活的插入元素 ;
④可以灵活的删除元素 。
劣势——
跟数组相比,速度较慢。主要影响效率的是,每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组。
更多内容:点击这里
关注微信公众号,最新技术干货实时推送
- java 数组列表
- Java数组列表
- Java泛型列表数组
- Java泛型数组列表
- java中数组列表ArrayList的使用
- Java集合数组列表中的数据排序
- Java解析Json字符串--数组或列表
- java泛型数组列表-ArrayList类
- Java -- 自己实现数组列表(Arraylist)
- Effective Java(列表优先于数组)
- java 将数组转化为集合列表
- All About JAVA 将数组转换成列表Example
- java归并排序(整数数组和list列表)
- Java源码分析 – ArrayList动态数组列表源码分析
- java创建各种数组jvm默认初始值列表
- java 列表、集合与数组之间的转化
- 【java】数组/列表排序功能的两种实现
- Java学习笔记【泛型数组列表ArrayList】
- 博学谷资料限时免费领取
- springmvc配置mysql数据库读写分离(基于注解aop)加上(搭建mysql主从同步)
- HDU4911 Inversion(线段树)
- Vue官方文档梳理-全局API
- maven小记
- Java数组列表
- Java运算符
- LeetCode 283. Move Zeroes
- 安装ORB_SLAM_ROS时遇到的一个问题
- nginx+tomcat+memcached
- 多线程断点下载工具
- Vue官方文档梳理-全局配置
- SPI四种模式区别
- CS224D学习笔记