首页 > 编程知识 正文

java中contains方法怎么用,contains Java

时间:2023-05-06 05:52:04 阅读:220069 作者:81

String类型 List<String> names= new ArrayList<>();names.add("长情的路人");names.add("zldsb");System.out.println(names.contains("长情的路人"));输出:true

本段代码 可以看出集合中存在“长情的路人”,运行后代码输出“true”。

contains的方法的实现原理

//调用了ArrayList的contains方法public boolean contains(Object o) {//"o"为查找的“长情的路人” return indexOf(o) >= 0;//indexOf为查找这个值的下标 }============================================================================//查看indexOf返回值的方法public int indexOf(Object o) {//o为要输入的元素,准备与集合中的元素进行比较 return indexOfRange(o, 0, size);//size为集合的长度 } int indexOfRange(Object o, int start, int end) { Object[] es = elementData;//es没有什么具体意义,只是将集合暂时存储 //判断输入的元素是否为空 if (o == null) {//为空时 for (int i = start; i < end; i++) { if (es[i] == null) { return i; } } } else {//不为空时 for (int i = start; i < end; i++) { //equals此时出现了多态;编译时为Object的方法,运行时则调用String的比较方法。 if (o.equals(es[i])) {//将传入的元素与集合中的元素进行对比 return i; } } } return -1; } Integer类型 Integer a = new Integer(9);Integer b = new Integer(9);Long c = new Long(9);System.out.println(a == b);//falseSystem.out.println(a.equals(b));//trueSystem.out.println(a.equals(9));//trueSystem.out.println(a.equals(c));//false

contains的方法的实现原理

public boolean equals(Object obj) {//存储的是刚传进来的元素 if (obj instanceof Integer) {//此时判断是否为Integer类型 return value == ((Integer)obj).intValue();//obj向下转型,调用intValue方法,传入数值,通过“==”来比较。 } return false;//类型不匹配返回false }============================================================================public int intValue() { return value;//返回输入的数值 }

==========================================================================

以上为两种引用类型举例,引用类型不用我们自己equals重写的方法,自己的类型中都有重写equals方法,所以我们可以直接调用;不过现实中我们自己定义类时,是需要我们手动重写equals方法的,下面举一个学生管理的例子说明一下。

==========================================================================

自定义类型 //学生类---重点关注equals方法的重写public class Student {private String sname;public Student(String sname) {this.sname = sname;}@Override//此时学生类要重写equals方法public boolean equals(Object obj) {//obj存储的是刚刚传过来的元素地址if(obj instanceof Student) {//判断是否为学生类Student stu = (Student)obj;//向下转型,调用学生类的新方法return this.sname.equals(stu.sname);//this指向刚刚传过来的元素,equals括号中的是集合中的元素}return false;}}============================================================================ //测试类public class Test {public static void main(String[] args) { List<Student> list = new ArrayList<>();//定义一个集合来存储数据Student student1 = new Student("dyx");//定义三个学生的名字Student student2 = new Student("gxdmla");Student student3 = new Student("狂野的凉面");list.add(student1);//将三个学生的信息添加到集合中list.add(student2);list.add(student3);System.out.println(list.contains(new Student("gxdmla")));//查看集合中是否有“gxdmla”的信息for (Student stu : list) {//增强fou循环,此为遍历数据的一种方法System.out.print(stu + "t");} }} 输出:true//返回true代表集合中含有这个元素Student [sname=dyx]Student [sname=gxdmla]Student [sname=狂野的凉面]

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。