详述ArrayList的contains方法
ArrayList的contains方法,有以下三种类型:
形式一:
查找的字符不为null时,看如下代码:
import java.util.ArrayList;public class Work {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Tom");String str = "Tom";System.out.println(list.contains(str));}
}
输出:
true
分析ArrayList的contains源代码:
public boolean contains(Object o) { //o指向str的对象,str为String类的对象,因此str为上转型对象。return indexOf(o) >= 0; //indexOf(o)执行结束后,返回了0,所以此处返回true。
}public int indexOf(Object o) { if (o == null) { //str不等于null,所以为false,进入else。for (int i = 0; i < size; i++)if (elementData[i]==null)return i;} else {for (int i = 0; i < size; i++) //size为this.size,即list.size,该for语句将list遍历进行一一比较。if (o.equals(elementData[i])) //因为o为上转型对象,所以equals方法运用了多态,此次实际运用的是String类的equals方法,即比较字符串的内容是否相同。return i; //如果满足if,则返回一个大于等于0的值,则由上面代码可知,此处返回0。}return -1;
}
形式二:
查找的字符为null时,看如下代码:
import java.util.ArrayList;public class Work {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Tom");String str = null;System.out.println(list.contains(str));}
}
输出:
false
分析ArrayList的contains源代码:
public boolean contains(Object o) { //o指向str的对象,str为String类的对象,因此str为上转型对象。return indexOf(o) >= 0; //indexOf(o)执行结束后,返回了-1,所以此处返回false。
}public int indexOf(Object o) { if (o == null) { //str等于null,进入if内容。for (int i = 0; i < size; i++) //对list进行遍历。if (elementData[i]==null) //如果由元素等于null,则返回一个大于等于0的数,此处没有null,所以继续往下走。return i;} else {for (int i = 0; i < size; i++)if (o.equals(elementData[i])) return i; }return -1; //for语句没有进行return,所以在这里返回了-1。
}
形式三:
查找的不是字符类型时,看如下代码:
import java.util.ArrayList;public class Work {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Tom");Test test = new Test();System.out.println(list.contains(test));}
}
输出:
false
分析ArrayList的contains源代码:
public boolean contains(Object o) { //o指向test的对象,test为Test类的对象,因此test为上转型对象。return indexOf(o) >= 0; //indexOf(o)执行结束后,返回了-1,所以此处返回false。
}public int indexOf(Object o) { if (o == null) { //for (int i = 0; i < size; i++) //test不等于null,所以为false,进入else。if (elementData[i]==null) return i;} else {for (int i = 0; i < size; i++) //size为this.size,即list.size,该for语句将list遍历进行一一比较。if (o.equals(elementData[i])) //因为o为上转型对象,所以equals方法运用了多态,此次实际运用的是Test类的equals方法,即Object类中的equals方法,即比较地址是否相同。此处不可能相同。return i; //没有数据使if的条件为true,所以该句不执行。}return -1; //上面代码没有执行过return,所以在这里返回了-1。
}
详述ArrayList的contains方法相关推荐
- ArrayList中contain方法
详述ArrayList中contains方法 JDK源码: //contains方法 public boolean contains(Object o) {return indexOf(o) > ...
- 详述ArrayList类中的contains方法
详述ArrayList类中的contains方法 一.contains方法的参数是String类型 import java.util.ArrayList;public class Test {publ ...
- ArrayList的subList方法
李说: ArrayList的subList方法获取到的是ArrayList的一段list,只是其中的一段视图.所以修改subList ,ArrayList同时会修改,因为本来就是同一个东西. jdk文 ...
- 如何巧妙的使用ArrayList的Clone方法
一.ArrayList的Clone方法的源码 返回一个Object对象,所以在使用此方法的时候要强制转换. ArrayList的本质是维护了一个Object的数组,所以克隆也是通过数组的复制实现的,属 ...
- java集合的添加方法_深入理解java集合框架之---------Arraylist集合 -----添加方法
Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /** * 检查数组容量是否够用 * @param minCapacity */ public void ensur ...
- ArrayList的使用方法【转载】
ArrayList的使用方法[转载] *** Source URL: http://i.yesky.com/bbs/jsp/view.jsp?articleID=889992&forumI ...
- java 释放数组_java集合ArrayList中clear方法内存释放分析
最近在看ArrayList源码的时候看到了ArrayList的clear方法,源码如下: public void clear() { modCount++; // clear to let GC do ...
- java基础 ArrayList集合基本方法演示
java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator;public class ArrayLis ...
- 慎用ArrayList的contains方法,使用HashSet的contains方法代替
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在启动一 ...
最新文章
- mysql update w3c_PHP MySQL Update
- 习题:codevs 2822 爱在心中 解题报告
- 设置html初始值0,数组怎么初始化?
- [How TO]-如何使用Sphinx编写漂亮的文档
- 如何让cloudflare缓存html,CloudFlareCDN页面规则缓存设置教程
- Django实现发邮件
- java用对话框输出计算结果_Java怎么实现输入一个string表达式然后输出计算的结果...
- setuptools find_packages
- 阿里云产品汇总及解释
- Python:PyCharm提示“Python version 2.7 does not support a ‘F‘ prefix”
- -bash : ** : command not found的问题解决(图文详解)
- Q140:PBRT-V3,各种渲染算法(Integrator,积分器)汇总
- 移动硬盘“脱机”(签名冲突)的硬盘如何正常使用
- 计算机函数公式发生额总计,Excel使用SUMIF函数统计各部门的奖金总额
- 日紫白飞星算法_九宫紫白飞星计算法
- vue 、前端rsa加密遇到的问题,message too long for RSA
- 爬虫练习--豆瓣英美剧爬虫
- word 目录里面添加分节符下一页出现空白页的解决方法
- HTML+CSS实现网页分页页码
- 操作系统生产者消费者问题实验报告