一、基本含义
Collection接口 → List 接口→ Arrays实现类。
名称:数组序列。
项目 | ArrayList | Vector |
---|---|---|
原理 | 同 | 同 |
功能 | 同 | 同 |
线程安全性 | 多线程环境中,程序员自己管理线程的同步问题 | 线程安全 |
长度增长 | 原长50%,节约内存空间 | 原长100% |
开发优先使用性 | 优先最新版本ArrayList | 次之 |
二、长度——size()
public class ListTest {
public List coursesToSelect;
public ListTest() {
this.coursesToSelect = new ArrayList();
}
public static void main(String[] args){
System.out.println(coursesToSelect.size());
}
}
三、获取
3.1 知对象
3.1.1 indexOf(Object o)
第一次出现的索引
有则索引,无则-1
Course cr1 = new Course("1", "语文");
System.out.println(coursesToSelect.indexOf(cr1));
3.1.2 lastIndexOf(Object o)
最后一次出现的索引
有则索引,无则-1
Course cr1 = new Course("1", "语文");
System.out.println(coursesToSelect.lastIndexOf(cr1));
3.2 知索引——get()
get(int index)
3.2.1 for循环
public void testGet() {
for (int i = 0; i < coursesToSelect.size(); i++) {
Course cr = (Course) coursesToSelect.get(i);
System.out.println("课程:" + cr.getId() + ":" + cr.getName());
}
}
3.2.2 foreach循环
foreach是Iterator的简写。
public void testForeach() {
/**
* 为什么使用Object?
* 原因是当一个元素存入集合中时,其类型被忽略,存储为Object型。
*/
for (Object obj : coursesToSelect) {
Course cr = (Course) obj;
System.out.println("课程:" + cr.getId() + ":" + cr.getName());
}
}
3.2.3 迭代器——Iterator
特点:不能存储数据,只是用来遍历集合中的元素。即必须依赖于集合而存在。
public void testIterator() {
// 通过集合的iterator方法,创建迭代器的实例。
Iterator it = coursesToSelect.iterator();
// 未知次数时,使用while循环。
while (it.hasNext()) {
Course cr = (Course) it.next();
System.out.println("课程:" + cr.getId() + ":" + cr.getName());
}
}
3.3 复制——clone()
返回此 ArrayList实例的浅拷贝。
四、增加——add()
4.1 元素为对象时——add()
4.1.1 末尾增加——add(E e)
Course cr1 = new Course("1", "语文");
coursesToSelect.add(cr1);
4.1.2 任意位置增加——add(int index, E element)
Course cr2 = new Course("2", "数学");
coursesToSelect.add(0, cr2);
4.2 元素为对象数组时——addAll()
4.2.1 末尾增加——addAll(Collection c)
Course[] courses = { new Course("3", "英语"), new Course("4", "政治") };
// 数组。不可以直接添加到集合中,需要先转化为List集合。
coursesToSelect.addAll(Arrays.asList(courses));
4.2.2 任意位置增加——addAll(int index, Collection c)
Course[] courses2 = { new Course("5", "历史"), new Course("6", "地理") };
coursesToSelect.addAll(2, Arrays.asList(courses2));
五、删除——remove()
5.1 知索引——remove(int index)
coursesToSelect.remove(1);
5.2 知对象
5.2.1 元素为对象时——remove(Object o)
Course cr = (Course)coursesToSelect.get(1);
coursesToSelect.remove(cr);
5.2.2 元素为对象数组时
5.2.2.1 直接删除——removeAll(Collection c)
Course[] courses = { (Course) coursesToSelect.get(0), (Course) coursesToSelect.get(1) };
coursesToSelect.removeAll(Arrays.asList(courses));
5.2.2.2 间接删除——retainAll(Collection c)
Course[] courses = { (Course) coursesToSelect.get(0), (Course) coursesToSelect.get(1) };
coursesToSelect.retainAll(Arrays.asList(courses));
5.3 清空——clear()
coursesToSelect.clear();
六、修改——set(int index, E element)
coursesToSelect.set(1, new Course("7", "物理"));
七、比较
7.1 是否包含——contains(Object o)
Course cr1 = (Course)coursesToSelect.get(1);
Course cr2 = new Course("1", "语文");
System.out.println(coursesToSelect.contains(cr1)); // true
System.out.println(coursesToSelect.contains(cr2)); // false
7.2 是否为空——isEmpty()
System.out.println(coursesToSelect.isEmpty());
八、排序
8.1 比较器
参见《集合框架-工具类(Collections)》
8.1 升序——sort(Comparator c)
(4)toArray()
以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。
(5)toArray(T[] a)
以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。