import java.util.ArrayList;或者import java.util.*;
1.定义和初始化
(1)创建空列表,然后逐一添加
ArrayList L=new ArrayList();
L.add(1);L.add("abc");
(2)格式化添加
ArrayList L=new ArrayList(){add(1);add("bc");}};
(3)将Collection作为参数传递进来
ArrayList L=new ArrayLIst(Arrays.asList(1,2,"bc"));
ArrayList L=new ArrayLIst(Arrays.asList("a,b,c".split(",")));
int[] x={1,2,3};
ArrayList L=new ArrayLIst(Arrays.asList(x));
2.新增
(1)添加到末尾 L.add(“a”);
(2)添加到指定位置 L.add(pos,“a”); L.add(pos,Collection x);
3.删除
(1)删除第一个匹配的元素 L.remove(“a”);
(2)删除指定位置的元素 L.remove(pos);
这里存在一个问题,如果ArrayList里面存的本来就是数字,那remove(1)只会删掉位置为1的元素,不会删掉数字是1的元素,如果想删掉应该这么写:L.remove((Integer)1);
4.访问元素 L.get(pos); //以下标来访问
5.查询元素 L.indexOf(“a”); //没有会返回-1
6.获取大小 L.size();
7.清空 L.clear();
8.判断是否为空 L.isEmpty();
9.打印
(1)逐个遍历然后打印
for(int i=0;i<L.size();i++)
System.out.println(L.get(i));
(2)直接打印
System.out.println(L);
10.遍历
(1)Iterator迭代器
Integer value=null;
Iterator iter=L.iterator();
while(iter.hasNext())
{
value=(Integer)iter,next();
System.out.println(value);
}
(2)for循环
for(int i=0;i<L.size();i++)
System.out.println(L.get(i));
(3)foreach循环
for(Integer i:L)
System.out.println(i);
11.ArrayList和数组的互相转换
- 数组转ArrayList
(1)ArrayList L=new ArrayList(Arrays.asList(x));
(2)ArrayList L=new ArrayList();
Collections.addAll(L,x);
- ArrayList转数组
Integer[] x=(Integer[]) L.toArray(new Integer[0]);
String[] x=(String[]) L.toArray(new String[0]);
- ArrayList转String
String str=StringUtils.join(L,",");
12.线程安全
ArrayList线程不安全,线程之间互相操作可能会擦除数据。解决方法有两种:
(1)继承ArrayList并重写方法,加上synchronized关键字。
(2)List list=Collections.synchronizedList(new ArrayList());