ArrayList contains方法

    技术2023-10-10  79

    //ArrayList contains方法 ArrayList<String> list = new ArrayList<String>(); list.add("Jim"); Object object = "Jim";//上转型对象 System.out.println(list.contains(object)); ----------------------------------------------------------------------------------------- contains: public boolean contains(Object o) { return indexOf(o) >= 0;//indexof 返回的值大于或等于0即代表在数组中找到了对应元素的位置,所以返回true; } indexof: public int indexOf(Object o) { if (o == null) { //o为"Jim"不为null,不执行该if; for (int i = 0; i < size; i++) if (elementData[i]==null) return i; } else { for (int i = 0; i < size; i++)//此处的size为成员变量,代表集合中的元素个数,此时为1; if (o.equals(elementData[i]))//由于o为String类上转型Object对象,出现多态(执行String类中重写的equal方法),elementData[i]为数组中已存在的数组元素; return i; //找到后返回在数组中的位置i; } return -1; } equals: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } ArrayList<Object> list = new ArrayList<Object>(); list.add(new Student("110")); Object object = new Student("110");//上转型对象 System.out.println(list.contains(object)); contains: public boolean contains(Object o) { return indexOf(o) >= 0;//indexof 返回的值大于或等于0即代表在数组中找到了对应元素的位置,所以返回true; } indexof: public int indexOf(Object o) { if (o == null) { //o为"Jim"不为null,不执行该if; for (int i = 0; i < size; i++) if (elementData[i]==null) return i; } else { for (int i = 0; i < size; i++)//此处的size为成员变量,代表集合中的元素个数,此时为1; if (o.equals(elementData[i]))//由于o为Student类上转型Object对象,(但是Student类中没有重写equals方法,所以调用的还是Object中的equals方法,比较地址,因为是new Student(),所以地址不同,所以返回false),elementData[i]为数组中已存在的数组元素; return i; //找到后返回在数组中的位置i; } return -1; } ----------------------------------------------------------------------------------------- 在Student类中重写equals方法: package com.jd.vo; public class Student { private String id; public Student(String id) { this.id = id; } @Override public boolean equals(Object obj) {//obj集合中元素 if (obj instanceof Student) {//在这里加一个if判断是为了排除不属于Student类的情况;如: list.add(new Date("110")),就会出现异常,因为Data类不属于Student类; Student student = (Student) obj; return this.id.equals(student.id);//thiscontains方法参数; } return false; } }

     

    Processed: 0.012, SQL: 9