containsAll() :用于检测 arraylist 是否包含指定集合中的所有元素
两个集合一样返回true,不一样返回false
注意
:有一种特殊情况3,重点理解,注意两个集合的使用前后顺序,避免业务中影藏bug
情况1:
public static void main(String[] args) {
List<String> list1 = Arrays.asList("1","2","3");
List<String> list2 = Arrays.asList("1","2","3");
boolean result = list2.containsAll(list1);
System.out.println(result);
}
执行结果:true
情况2:
public static void main(String[] args) {
List<String> list1 = Arrays.asList("1","2","3");
List<String> list2 = Arrays.asList("1","2");
boolean result = list2.containsAll(list1);
System.out.println(result);
}
执行结果:false
同样的两个集合,集合使用顺序不一样,结果不一样
由此可见,情况3中,内部实现方式是通过判断list1集合是否包含在list2中才会返回true
所以当两个集合调换使用顺序,如情况4,执行结果才会返回false
情况3:
public static void main(String[] args) {
List<String> list1 = Arrays.asList("1","2");
List<String> list2 = Arrays.asList("1","2","3");
boolean result = list2.containsAll(list1);
System.out.println(result);
}
执行结果:true
情况4:
public static void main(String[] args) {
List<String> list1 = Arrays.asList("1","2");
List<String> list2 = Arrays.asList("1","2","3");
boolean result = list1.containsAll(list2);
System.out.println(result);
}
执行结果:false
contains():方法用于判断字符串中是否包含指定的字符或字符串
这里重点说的是使用contains()方法判断一个对象是否包含在一个集合中
执行一下代码需要先实现以下功能:
1、创建实体类User
2、创建构造函数
3、重写equals方法注意
如果不重写equals方法,执行结果都是false
public class User {
private Integer id;
private String name;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
//构造函数
public User(Integer id, String name, String phone) {
this.id = id;
this.name = name;
this.phone = phone;
}
//重写equals方法
@Override
public boolean equals(Object obj){
if(!(obj instanceof User)){
return false;
}
User temp = (User) obj;
//此处可根据业务需求进行调整字段
if(this.getId().equals(temp.getId()) && this.getName().equals(temp.getName()) && this.getPhone().compareTo(temp.getPhone())==0){
return true;
}
return false;
}
}
public static void main(String[] args) {
List<User> list1 = Arrays.asList(
new User(1, "张三1", "15810075811"),
new User(2, "李四", "15810075822"),
new User(3, "王五", "15810075833")
);
List<User> list2 = Arrays.asList(
new User(1, "张三", "15810075811"),
new User(2, "李四", "15810075822"),
new User(3, "王五", "15810075833")
);
list1.forEach(list->{
if(list2.contains(list)){
System.out.println("true");
}else{
System.out.println("false");
}
});
}
执行结果:
false
true
true