package com.hd.Test;
import java.util.ArrayList;
import com.hd.DB.DataSource;
public class Test02 {
public static void main(String[] args) {
ArrayList<Integer> date=new ArrayList<Integer>();
date.add(1);//date.add(new Integer(1) )
System.out.println(date.contains(1));
ArrayList<String> date1=new ArrayList<String>();
date1.add("1");
System.out.println(date1.contains("1"));
ArrayList<User> date2=new ArrayList<User>();
date2.add(new User(123,"Jany"));
System.out.println(date2.contains(new User(123,"Jany")));
}
}
class User{
int id;
String name;
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
import java.util.ArrayList;
import com.hd.DB.DataSource;
public class Test02 {
public static void main(String[] args) {
ArrayList<Integer> date=new ArrayList<Integer>();
date.add(1);//date.add(new Integer(1) )
System.out.println(date.contains(1));
ArrayList<String> date1=new ArrayList<String>();
date1.add("1");
System.out.println(date1.contains("1"));
ArrayList<User> date2=new ArrayList<User>();
date2.add(new User(123,"Jany"));
System.out.println(date2.contains(new User(123,"Jany")));
}
}
class User{
int id;
String name;
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
}
输出结果:true
true
false
contains(Object o)底层是调用Object.equals(Object obj)来比较是否包含,equals比较的是堆中的地址
date.contains(1)在底层比较是括号内1和原对象中1的地址
date.contains(“1”)也在底层比较是括号内“1”和原对象中“1”的地址
date2.contains(new User(123,"Jany"))在底层比较的是date2.add(new User(123,"Jany"))执行后的date2和括号内新建的123,"Jany"对象的地址,新建的对象的地址自然和原集合date2的地址不再一样。所以想要比较内容的话要重写