[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)使用格式 导包:我们将所有的类 ...
随机推荐
- 发布Maven项目 nexus
1.在pom.xml文件中配置需要发布的工厂 如果想把项目发布到nexus中,需要在pom.xml中配置releases和snapshots版本发布的具体repository <distribu ...
- Subquery typo with using in(转)
Subquery typo with using in Do you use the following syntax? SELECT * FROM TABLE WHERE COLUMN IN ( ...
- mysql mapper中增删查改
//1.增 public int insert(Port port) ; //2.删 public int deleteM(String id);//3.改 public int update(Por ...
- jdbcTemplate in
参考 http://blog.csdn.net/gaopeng0071/article/details/75049952 使用NamedParameterJdbcTemplate public cla ...
- Django的models操作
一.先看单表操作 增 方式1: models.book.objects.create( Book_name = "aaa", Book_info = "bbb" ...
- 单词拆分 I · Word Break
[抄题]: 给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词. s = "lintcode" dict = ["lint" ...
- 矩形最小路径和 · Minimum Path Sum
[抄题]: 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径. [思维问题]: [一句话思路]: 和数字三角形基本相同 [输入量]:空: 正常情况:特大:特小:程序里 ...
- linux系统挂载ISO文件
1 上传iso文件使用xftp上传系统oracleLinux7.3.iso光盘镜像到/toolsPackage 为方便使用,重命名光盘镜像文件[root@rhel64 software]# mv rh ...
- 超星网站cc++
a系统 苏龙杰 a系统 苏龙杰 目录 1 C/C ++程序设计 1.1 前 言 1.2 第一部分 基 础 篇 1.2.1 第1章 初识C 1.2.1.1 1.1 C语言的诞生与发展 1 ...
- geoserver 的缓存技术
geoserver提到的缓存工具共有两个:tilecache和geowebcache.geowebcache是java写的,整合进geoserer中. tilecache则是python写的一个小程序 ...