ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java判断两个集合比较containsAll、Java集合判断对象相等contains

2022-01-25 10:03:29  阅读:206  来源: 互联网

标签:Java String contains list1 list2 User 集合 public asList


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

标签:Java,String,contains,list1,list2,User,集合,public,asList
来源: https://blog.csdn.net/qiziyu520/article/details/122663431

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有