本篇文章主要讲解ArrayList实现类常用方法。
注:上图中,Collection 为父接口。List和Set为子接口。ArrayList和LinkedList为List的实现类。HashSet和TreeSet为Set的实现类。
Collection的特点:不唯一,无序
List的特点:不唯一,有序
Set的特点:唯一,无序。(与List正好相反)
ArrayList的特点:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素效率比较高
LinkedList的特点:采用链表存储方式,插入和删除元素效率高
本篇文章主要讲解ArrayList实现类常用方法。
举一个学生类Student来具体讲解。
创建一个学生类。定义一些属性,带参构造方法,get方法。
public class Student {
private String name;
private int age;
private char gender;
private int stuNo;
public Student(String name, int age, char gender, int stuNo) {
this.name = name;
this.age = age;
this.gender = gender;
this.stuNo = stuNo;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public char getGender() {
return gender;
}
public int getStuNo() {
return stuNo;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", stuNo=" + stuNo +
'}';
}
创建Test类。
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List arrayList = new ArrayList();//创建ArrayList集合对象arrayList
}
}
分类来说一说。
一、增加
1.boolean add(E e)方法:在列表的末尾增加指定的元素
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List arrayList = new ArrayList();//创建ArrayList集合对象ArrayList
//新增方法1
Student stu1 = new Student("alisa", 18, '女', 1);
arrayList.add(stu1);
//新增方法2
arrayList.add(new Student("Jason",34,'男',2));
Student stu2 = new Student("张三",19,'男',3);
arrayList.add(stu2);
Student stu3 = new Student("李四",55,'女',4);
arrayList.add(stu3);
for (Object o : arrayList) {
System.out.println(o);
}
}
}
运行结果如下:
2.void add(int index,E element)方法:在指定位置上插入指定的元素
Student stu4 = new Student("王五",40,'男',5);
arrayList.add(stu4);
arrayList.add(1,stu4);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
3.boolean addAll(Collection<? extends E>c)方法:在列表末尾处将集合c中的元素添加进去。
Student stu5 = new Student("coco",22,'男',6);
Student stu6 = new Student("haha",46,'女',7);
List list = new ArrayList();
list.add(stu5);
list.add(stu6);
arrayList.addAll(list);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
4.boolean addAll(int index,Collection<? extends E>c)方法:在指定位置插入集合c中的元素。
Student stu5 = new Student("coco",22,'男',6);
Student stu6 = new Student("haha",46,'女',7);
List list = new ArrayList();
list.add(stu5);
list.add(stu6);
// arrayList.addAll(list);
arrayList.addAll(1,list);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
二、删除
1、boolean remove(Object o)方法:删除列表中从左到到右第一次出现的指定元素
arrayList.remove(stu4);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
2.E remove(int index)方法:删除指定位置的元素
arrayList.remove(3);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
3.boolean removeAll(Colleaction<?>c)方法:从列表中删除集合c中元素
arrayList.removeAll(list);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
三、改
1、E set(int index,E element)方法:将指定位置的元素改为指定的元素
arrayList.set(0,stu3);
for (Object o : arrayList) {
System.out.println(o);
}
运行结果如下:
四、提取元素
E get(int index)方法:返回指定位置的元素
System.out.println( arrayList.get(2));
运行结果如下:
五、包含
1.boolean contains(Object o)方法:判断列表中是否含有指定元素
System.out.println(arrayList.contains(stu2));
运行结果如下:
2.boolean containsAll(Collection<?>c)方法:判断列表中是否包含集合c中的所有元素
for (Object o : arrayList) {
System.out.println(o);
}
System.out.println(arrayList.containsAll(list));
运行结果如下:
3、int indexOf(Object o)方法:返回列表中从左到右第一次出现指定元素的下标
for (Object o : arrayList) {
System.out.println(o);
}
System.out.println(arrayList.indexOf(stu4));
运行结果如下:
4.int lastIndexOf(Object o)方法:返回列表中从右到左第一次出现指定元素的下标
for (Object o : arrayList) {
System.out.println(o);
}
System.out.println(arrayList.lastIndexOf(stu4));
运行结果如下:
六、迭代器
Iterator<E> iterator()方法: 重写父类的iterator方法
Iterator <Student> it = list.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
运行结果如下:
2、ListIterator<E>listIteraotr()方法:返回该列表的迭代器
ListIterator<Student> it = list.listIterator();
while (it.hasNext()){
System.out.println(it.next());
}
运行结果如下:
3.ListIterator<E>listIteraotr(int index)方法:返回指定位置该列表的迭代器
ListIterator<Student> it =list.listIterator(1);
while (it.hasNext()){
System.out.println(it.next());
}
运行结果如下:
七、其他常用方法:
1、int size()方法:返回列表中元素的个数
for (Object o : arrayList) {
System.out.println(o);
}
System.out.println(arrayList.size());
运行结果如下:
2、boolean isEmpty()方法:判断列表是否为空
for (Object o : arrayList) {
System.out.println(o);
}
System.out.println(arrayList.isEmpty());
运行结果如下:
3.List<E> subList(int FromIndex,int toIndex)方法:返回列表中从指定位置FromIndex(包括)到toIndex(不包括)的部分视图
for (Object o : arrayList) {
System.out.println(o);
}
System.out.println("------------------------------------");
for (Object o : arrayList.subList(1,4)) {
System.out.println(o);
}
运行结果如下:
4.Boolean retainAll(Colleation<?>c)方法:保留指定集合c的元素
for (Student o : arrayList) {
System.out.println(o);
}
System.out.println("------------------------------------");
arrayList.retainAll(list);
for (Student o : arrayList) {
System.out.println(o);
}
运行结果如下:
5.Object[] toArray()方法:将集合元素转为object类型的数组返回
for (Student o : arrayList) {
System.out.println(o);
}
System.out.println("------------------------------------");
for (Object o : arrayList.toArray()) {
Student stu = (Student) o;
System.out.println(stu);
}
运行结果如下: