欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList中 contains比较内容,arraylistcontains

来源: javaer 分享于  点击 14344 次 点评:105

ArrayList中 contains比较内容,arraylistcontains


博主java基础不好,今天用到ArrayList的contains的方法的时候,我发现尽管我的两个对象的实例内容相同(当然两个实例的ID号并不相同),但是contains也不能判true

		public class TestClass{
			int a;
			int b;
			public TestClass(int a, int b){
				this.a = a;
				this.b = b;
			}
		}
		TestClass a = new TestClass(1, 1);
		TestClass b = new TestClass(1, 1);
		ArrayList <TestClass>list = new <TestClass>ArrayList();
		list.add(a);
		System.out.print(list.contains(b);
TestClass是自己定义的类

上面的代码显示的会是false;

为什么内容一样会是false,博主去看了一下contains的源码发现是这样写的:


调用了父类object的equals来比较于是我又去看了equals的源码





发下object中的equals中的源码是这样的

直接比较实例的ID号。


难怪会不一样。




在java中解决这个问题简直就是轻而易举,我们只要重写TestClass中的equals就啦。

		TestClass{
			int a;
			int b;
			public boolean equals(Object obj) {   
				if (obj instanceof TestClass) {   
					TestClass obj1 = (TestClass) obj;   
					return (this.a == obj1.a)&&(this.b == obj1.b); 
				}
           
				return super.equals(obj); 
			}			
		}

这是一个例子,up写的没那么好,就按别人的思路重写了下。

相关文章

    暂无相关文章

用户点评