Java容器类List ArrayList Vector有什么作用
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"Java容器类List ArrayList Vector有什么作用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java容器类List
千家信息网最后更新 2025年01月20日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) { Listlist = 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安全错误
数据库的锁怎样保障安全
委托软件开发无形资产
网络技术与应用的学校
影视软件开发
达梦数据库使用dmp还原
网络安全技术及成果
国家级线下网络安全竞赛
网络安全能进国企吗
化妆品软件开发
cacti 数据库修复
网络安全演讲征文
网络安全边界 哪里购买
计算机网络技术提取颜色
联想sr250服务器管理口密码
邯郸学院网络技术专业
报纸系统 数据库实验
广东戴尔服务器生产商
股东权益的市场价值数据库
海尔软件开发岗位怎么样
海关截单数据库
lol比赛专用服务器
吉林语音网络技术标准
软件开发销项税
虚拟机安装服务器系统黑屏
csgo你不能在安全服务器商
access数据库对象共有
银行网络安全 诈骗
元宇宙服务器知识
云服务器搭建数据库
承德网络技术质量
计算机网络安全有什么性