当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。集合是一个不定长,包含多个元素的对象。(有意思的是数组也是对象,只不过没有对应的类,直接由jvm创建)
length:最大容量
1. 声明一个数组
String[] arr1 = new String[5];
String[] arr2 = {"a","b","c", "d", "e"};
String[] arr3= new String[]{"a","b","c","d","e"};
2、Arrays.fill()填充数组
void
fill(
int
[] a,
int
val)全部填充
void
fill(
int
[] a,
int
fromIndex,
int
toIndex,
int
val)填充指定索引的元素
3、Arrays.sort()对数组排序void
sort(
int
[] a)全部排序
void
sort(
int
[] a,
int
fromIndex,
int
toIndex)排序指定索引的元素
4、Arrays.copyOf()复制数组
int
[] copyOf(
int
[] original,
int
newLength)复制数组,指定新数组长度
int
[] copyOfRange(
int
[] original,
int
from,
int
to)复制数组,指定所复制的原数组的索引
5、检查数组中是否包含某一个值
boolean
b = Arrays.asList(stringArray).contains(
"a"
);
先使用Arrays.asList()将Array转换成List
6、连接两个数组
ArrayUtils.addAll(intArray, intArray2);
7、数组翻转
ArrayUtils.reverse(intArray);
8、从数组中移除一个元素
ArrayUtils.removeElement(intArray,
3
);
//创建了一个新数组
9.System.arraycopy
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是:
public static void (object src,int srcPos,object dest,int destPos,int length)
src:源数组; srcPos:源数组要复制的起始位置;
dest:目的数组; destPos:目的数组放置的起始位置; length:复制的长度。
注意:src and dest都必须是同类型或者可以进行转换类型的数组.
正文
arraylist是是动态数组,从数据结构上来讲,是数组实现的线性表(即顺序表)。
capacity:数组容量(长度),默认是10
size:当前元素个数
1.构造方法
//初始为空数组public ArrayList()
//根据指定容量,创建个对象数组public ArrayList(int initialCapacity)
//直接创建和指定集合一样内容的 ArrayList public ArrayList(Collection extends E> c)
2.添加元素
public boolean add(E e) {
//对数组的容量进行调整
ensureCapacityInternal(size + 1); //modCount增加!!
elementData[size++] = e;
return true;
}
//在指定位置添加一个元素
public void add(int index, E element)
//添加一个集合
public boolean addAll(Collection extends E> c)
//在指定位置,添加一个集合
public boolean addAll(int index, Collection extends E> c)
3.获取元素
//获取
public E get(int index)
4.修改元素
//修改
public E set(int index, E element)
5.删除元素
//根据位置删除
public E remove(int index)
//删除某个元素
public boolean remove(Object o)
//删除或者保留指定集合中的元素
private boolean batchRemove(Collection> c, boolean complement)
//清除全部public void clear()
6.list中是否包含某个元素
public boolean contains(Object o)
7.list中查看元素的索引
//遍历,第一次找到就返回
public int indexOf(Object o)
//倒着遍历
public int lastIndexOf(Object o)
8.转换
toarray和toString
9.截取集合
subList(int fromIndex, int toIndex)
10.对数组容量进行调整
public void ensureCapacity(int minCapacity)
由于arraylist不是同步的,所以,想要线程安全的时候,需要直接在初始化时用 Collections.synchronizedList 方法进行包装: