Java容器类List ArrayList Vector有什么作用
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,本篇内容主要讲解"Java容器类List ArrayList Vector有什么作用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java容器类List
千家信息网最后更新 2025年11月12日Java容器类List ArrayList Vector有什么作用
本篇内容主要讲解"Java容器类List ArrayList Vector有什么作用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java容器类List ArrayList Vector有什么作用"吧!
List是接口,声明了各个方法,不多说。且看ArrayList类。
ArrayList类的成员变量有Object[] elementData,int size;其中elementData数组用来存储加入到ArrayList的对象,size为列表中实际的对象数目。ArrayList类不是线程安全的。
Vector与ArrayList的实现基本相同,只是Vector类是线程安全的,其方法都带有synchronized关键字,如果不考虑线程同步的话,ArrayList性能要好一些。当前它们内部实现原理都是用到对象数组来实现,如果元素数目确定,直接用数组效率***。
简单的用法:(后面是数据打印结果)
public class ListDemo { /** * @param args */ public static void main(String[] args) { List list = new ArrayList(); String[] strArr = new String[3]; boolean ret = list.add("haha"); list.add(new String("aa")); list.add(null); System.out.println(list.size());//3 System.out.println(ret);//true System.out.println(list);//[haha, aa, null] System.out.println(strArr);//[Ljava.lang.String;@1fee6fc System.out.println(strArr.getClass().getName());//[Ljava.lang.String; System.out.println(list.indexOf("aa"));//1 System.out.println(list.indexOf(null));//2 String str = list.set(1, "ee"); System.out.println(str);//aa System.out.println(list);//[haha, ee, null] String remove = list.remove(0); System.out.println(remove);//haha System.out.println(list);//[ee, null] boolean result = list.remove("ff"); System.out.println(result);//false result = list.remove("ee"); System.out.println(result);//true System.out.println(list);//[null] } } public ArrayList() { this(10); } public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; } public boolean add(E e) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = e; return true; } /*移除指定位置元素,注意每次移除数据都会将数组中后面数据移动来填充数组*/ public E remove(int index) { RangeCheck(index); modCount++; E oldValue = (E) elementData[index]; int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // index后面数据依次往前移动,将***一个位置赋值为0,让gc来回收空间。 return oldValue; } public void ensureCapacity(int minCapacity) { modCount++;//这个变量不用管。 int oldCapacity = elementData.length; //初始时设定的数组长度 if (minCapacity > oldCapacity) { //如果数组对象数目>初始数组长度,则需要扩容。 Object oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; //新的容量大小 if (newCapacity < minCapacity) newCapacity = minCapacity; /*该方法会创建一个新的对象数组,然后调用 System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));方法将源数组数据拷贝到新数组中。引用更新,指 向新的对象数组。*/ elementData = Arrays.copyOf(elementData, newCapacity); } } /*将对象数组削减到当前元素数目大小,减少存储空间*/ public void trimToSize() { modCount++; int oldCapacity = elementData.length; if (size < oldCapacity) { elementData = Arrays.copyOf(elementData, size); } } /*查找对象***出现的位置,若没有找到,返回-1。由 代码可知,可以在list中加入null对象,并查找到。*/ public int indexOf(Object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementData[i]==null) return i; } else { for (int i = 0; i < size; i++) if (o.equals(elementData[i])) return i; } return -1; } /*替换指定位置的元素值,返回该位置中old值*/ public E set(int index, E element) { RangeCheck(index); //检查范围 E oldValue = (E) elementData[index]; elementData[index] = element; return oldValue; } /*返回指定位置的值*/ public E get(int index) { RangeCheck(index); return (E) elementData[index]; } private void RangeCheck(int index) { if (index >= size) throw new IndexOutOfBoundsException( "Index: "+index+", Size: "+size); } public int size() { return size; } public boolean isEmpty() { return size == 0; }到此,相信大家对"Java容器类List ArrayList Vector有什么作用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
数组
对象
方法
数目
作用
容器
数据
线程
安全
位置
元素
内容
变量
大小
实际
空间
长度
存储
学习
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
用友g6连接不了数据库
有线电视的网络技术指导
银行的软件开发岗要求高么
网络安全设置是什么
手机服务器提示输入用户名和密码
第一混乱的服务器
天龙诀数据库
嘟声网络技术
服务器多用户资源分配
网络技术专业主修课程
怀柔区深信服数据库安全审计
桃源软件开发大专学校
安阳机动车系统服务器打不开
哪些数据库可以查代谢通路
网络安全只的是哪些方面
网络安全法正式发布时间
联通接入点服务器怎么设置网速快
网络安全宣传机制
网络安全法张宏良
服务器访问不了网站
下面属于access数据库
网络安全四大热点
中国建筑网络安全宣传周
西安海尔软件开发
设置数据库默认访问模式名称
永无止境下载软件开发
军队网络安全保密管理制度
mc 1.0.3 服务器
网络安全法正式发布时间
株洲以太坊软件开发