1.数组
数组在内存中是连续存储的,优点是它的索引速度非常快,而且赋值与修改元素较快,不足是在数组中插入数据比较麻烦,同时声明数组时应知名数组的长度,若数组长度过长会造成内存浪费,数组长度过短,会造成数据溢出的错误。
1.1 实例:
string[] s=new string[2];
//赋值
s[0]="a"; s[1]="c";
//修改
s[1]="b";
2.ArrayList
ArrayList 是一个数组队列,相当于动态数组,在声明ArrayList对象时并不需要指定它的长度。与Java中的数组相比,它的容量能动态增长。它继承AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
2.1 ArrayList常用API的用法实例:
package hashmap;
import java.util.*;
//ArrayList中常用的API用法
public class ArrayListTest {
public static void main(String[] args) {
//创建ArrayList
ArrayList list = new ArrayList();
//添加元素
list.add(1);
list.add("a");
list.add("b");
list.add("v");
list.add("d");
//在指定位置添加元素
list.add(0, 5);
System.out.println("the first element is:" + list.get(0));
//删除3
list.remove("v");
//获取ArrayList的大小
System.out.println("size=: " +list.size());
//判断list中是否包含3
System.out.println("ArrayList contains 3 is : "+list.contains(3));
//设置第二个元素为10
list.set(1,"10");
//通过Iterator遍历
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
System.out.println("next is:" + iter.next());
}
//清空ArrayList
list.clear();
//判断ArrayList是否为空
System.out.println("ArrayList is empty: " + list.isEmpty());
}
}
2.2 运行结果
2.3 拆箱与装箱
在ArrayList中我们可以插入不同类型的数组,如字符串或者数字,因为其会把所有插入的数据当做object类型来处理。然而在插入和使用数据的时候,就存在装箱与拆箱的操作,这回带来很大的性能损耗。
所谓装箱就是指:就是将值(或其他)类型的数据打包到引用类型的实例中,如下所示:
int i = 1;
object j = (object)i;
拆箱就是指:就是从引用数据中提取值(或其他)类型,如下所示:
object j = 1;
int i = (int)j;
在声明ArrayList时,我们也可以指定存入数据的类型
ArrayList<String> list2 = new ArrayList<>();//只能添加字符串