Java容器类List ArrayList Vector有什么作用
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,本篇内容主要讲解"Java容器类List ArrayList Vector有什么作用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java容器类List
千家信息网最后更新 2024年11月17日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安全错误
数据库的锁怎样保障安全
工业4.0 软件开发服务
沈阳苹果软件开发费用多少
魔兽世界 不同服务器
怀旧服各服务器平衡情况
r语言外接服务器
软件开发有没有不要经验的
武汉交换机软件开发工程师
暗黑2数据库凯恩
中国人民银行 软件开发
请假审批数据库设计
数据库查找以什么为开头的
爬取知乎用户数据库
河北潮流软件开发服务价钱
计算机网络技术未来岗位需求
东营商城软件开发公司
济南易淘网络技术有限公司
联通公司网络安全员
未来网络安全发展趋势
个体工商户可以办软件开发
mac dhcp服务器
运城盘古网络技术公司
芜湖 软件开发
对网络技术员的评语
黑暗与光明怎么进入其他服务器
华为网络技术总裁
无线网络技术员主要工作
漫画网络安全基本知识
章丘苍浩网络技术
澳大利亚网络安全
网络安全设备维护合同