[Java]ArrayList集合的contains方法
用到集合ArrayList时经常会用到里面自带的方法boolean contains(Object o);此方法用于判断集合里面是否包含元素o,现在讨论下在Object类型为类类型的时候的情况;
class Point1{ //代表细胞
public int x; //行
public int y; //列
public Point1(int x,int y){
this.x=x;
this.y=y;
}
}
public class Test{
public static void main(String args[]){
List<Point1> list=new ArrayList<Point1>();
Point1 a=new Point1(1,2);
Point1 b=new Point1(1,2);
list.add(a);
if(list.contains(b)){
System.out.println("1");
}
}
}
无输出,因为对象a和b是拥有不同的引用!
看ArrayList的contains的源码
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
在语句 o.equals(elementData[i]) 中,调用了equals方法,众所周知,此方法比较的是引用,所以可以Override此方法以达到我们所需要的效果。
class Point1{ //代表细胞
public int x; //行
public int y; //列
public Point1(int x,int y){
this.x=x;
this.y=y;
}
@Override
public boolean equals(Object obj) {
Point1 newPoint=(Point1)obj;
return this.x==newPoint.x && this.y==newPoint.y;
}
}
class Point1{ //代表细胞
public int x; //行
public int y; //列
public Point1(int x,int y){
this.x=x;
this.y=y;
}
@Override
public boolean equals(Object obj) {
Point1 newPoint=(Point1)obj;
return this.x==newPoint.x && this.y==newPoint.y;
}
}
public class Test{
public static void main(String args[]){
List<Point1> list=new ArrayList<Point1>();
Point1 a=new Point1(1,2);
Point1 b=new Point1(1,2);
list.add(a);
if(list.contains(b)){
System.out.println("1");
}
}
}
1
[Java]ArrayList集合的contains方法的更多相关文章
- java ArrayList集合
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类).在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来 ...
- java ArrayList的几种方法使用
package java06; import java.util.ArrayList; /* ArrayList的常用的几个方法: public boolean add(E e) : 向集合汇总添加元 ...
- JAVA ArrayList集合基础
java集合的使用方法 一,集合ArrayList的定义方式 ArrayLsit<数据类型> 变量名=new ArrayList<数据类型>(); 二,集合的操作和概念 ...
- java List集合中contains方法总是返回false
ArrayList的contains方法 java 今天在用ArrayList类的caontains方法是遇到了问题,我写了一个存放User类的ArrayList 但在调用list.contains( ...
- JAVA ArrayList集合底层源码分析
目录 ArrayList集合 一.ArrayList的注意事项 二. ArrayList 的底层操作机制源码分析(重点,难点.) 1.JDK8.0 2.JDK11.0 ArrayList集合 一.Ar ...
- Java ArrayList的不同排序方法
本文由 ImportNew - 温布利往事 翻译自 dzone.欢迎加入翻译小组.转载请见文末要求. 由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.Arra ...
- java 多线程 集合的包装方法Collections.synchronizedXXXXX;线程安全的集合类:Java.util.concurrent.ConcurrentXXX;java.util.concurrent.CopyOnWriteXXXX
问题:ArrayList 等线程不安全 当多线程并发修改一个集合数据时,可能同一个下标位置被覆盖. 示例代码: 一个List,我们创建10个线程,每个线程往这个List中添加1000条数据,结果往往 ...
- Java ArrayList几种遍历方法
import java.util.ArrayList; import java.util.Iterator; public class StringSampleDemo { public static ...
- [Day6]引用数据类型、ArrayList 集合
1.类的定义与使用 (1)类的定义格式 创建java文件,与类名相同 public class 类名{ 数据类型 属性名称1: 数据类型 属性名称2: … } (2)使用格式 导包:我们将所有的类 ...
随机推荐
- 吴裕雄 实战PYTHON编程(8)
import pandas as pd df = pd.DataFrame( {"林大明":[65,92,78,83,70], "陈聪明":[90,72,76, ...
- etcd ui
https://github.com/henszey/etcd-browser docker build --build-arg http_proxy=http://109.105.4.17:3128 ...
- Linux Tomcat重新启动
在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看 ...
- URL转义字符
[URL转义字符] 参考:http://www.cnblogs.com/jiunadianshi/articles/2353968.html
- flush(), clear(), save()的简单解释
hibernate最新发布包的javadoc里对这三个方法的解释是: clear() :Completely clear the session.清空session,该清空操作只对于要保存的.删除的和 ...
- 使用UUID方法生成全球唯一标识
需要生成唯一字符串,如生成应用标识等,可以直接用java.util.UUID类实现. UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字, ...
- 如何转换pdf文档为word文档--先标记下,本周把这个问题知识掌握
http://developer.51cto.com/art/201803/567539.htm
- python之socket运用1
先看下服务端的代码 import socket ip_bind = ("127.0.0.1",3000) sk = socket.socket() sk.bind(ip_bind) ...
- 利用redis完成自动补全搜索功能(三)
前面已经完成了分词和自动提示功能,最后把搜索结合在一起,来个完成的案例.当然最好还是用搜索分词解决,这个只是一个临时解决方案. 其实加上搜索很简单,要做的就是3件事 1. 分词的时候,把有用词的id存 ...
- .NET中CORS跨域访问WebApi
我这里只写基本用法以作记录,具体为什么看下面的文章: http://www.cnblogs.com/landeanfen/p/5177176.html http://www.cnblogs.com/m ...