ArrayList的使用
ArrayList是一个实现类,可以直接new一个对象
特点:有序,有下标,可重复,所以可以遍历输出,使用列表迭代器可以实现逆向遍历
在这边文章中重点就是重写equals方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Student)) return false;
Student student = (Student) o;
return age == student.age &&
name.equals(student.name);
}
重写Object类的equals方法之后可以直接arrayList.remove(new Student(“学生1”, 22));这样就可以成功移除集合中的此对象,因为重写equals方法之后比较规则变化了
public class Test {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
Student s1 = new Student("学生1", 22);
Student s2 = new Student("学生2", 23);
Student s3 = new Student("学生3", 24);
Student s4 = new Student("学生4", 25);
//1.添加元素
arrayList.add(s1);
arrayList.add(s2);
arrayList.add(s3);
arrayList.add(s4);
System.out.println(arrayList.toString());
//2.删除元素
arrayList.remove(new Student("学生1", 22));
//通过new一个对象来删除集合中的原有对象必须重写equals方法
System.out.println(arrayList.size());
System.out.println(arrayList.toString());
//3.遍历元素【重点】
System.out.println("=============for遍历===========");
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
//3.1使用迭代器
System.out.println("=============3.1迭代器===========");
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()){
Student s = (Student)iterator.next();
System.out.println(s.toString());
}
//3.2列表迭代器
System.out.println("=============列表迭代器从前往后===========");
ListIterator listIterator = arrayList.listIterator();
while (listIterator.hasNext()){
Student next = (Student)listIterator.next();
System.out.println(next);
}
System.out.println("=============列表迭代器从后往前===========");
while (listIterator.hasPrevious()){
Student previous = (Student)listIterator.previous();
System.out.println(previous);
}
//4.判断
System.out.println(arrayList.contains(new Student("学生4", 25)));//true
//虽然new了一个对象,地址不同,但是这个新new的对象的属性值与集合中的是相同的,所以返回true
//重写了equals使比较规则变化
System.out.println(arrayList.isEmpty());//false
//5.查找
System.out.println(arrayList.indexOf(new Student("学生3", 24)));//1
}
}