自定义类型在Set容器里

本文探讨了如何确保自定义Person类在Set容器中的唯一性,通过重写hashCode()和equals()方法来实现。同时,介绍了在TreeSet中如何实现自定义类型的排序,需要实现Comparable接口并重写compareTo()方法。
摘要由CSDN通过智能技术生成

一、子定义Person类在Set容器里的唯一值条件

1.自定义Person类

2.重写hashCode() 与 equals()函数

public class Person {
	private String id;
	private String name;
	private int age;
	
	 
	public Person(){}
	public Person(String id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	@Override
	//确定自定义类型的hashCode的值
	public int hashCode() {
		System.out.println("hashcode");
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	//确定自定类型的比较方式: 这里是如果年龄、id、姓名都相等的话就是相等
	//没有重写该方法的情况,系统默认使用Object的equals()方法 ,比较的是地址
	public boolean equals(Object obj) {
		System.out.println
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用std set容器时,如果要处理自定义类型的元素,我们需要定义一个比较函数(仿函数)来指定排序规则。如果我们想要创建一个const iterator(指向const值的迭代器),我们可以通过定义一个const set来实现。const iterator允许我们遍历容器,但不能用来修改所指向的值。 与此似,如果我们想要创建一个const set来存储自定义类型的元素,并且希望按照特定的排序规则进行排序,我们需要定义一个比较函数(仿函数)来传递给set构造函数。这样,在插入元素时,set容器会自动根据比较函数的规则进行排序。 对于set容器,我们可以使用insert()函数向容器中插入元素,使用erase()函数删除元素,使用clear()函数清除所有元素。插入和删除操作都可以使用迭代器来指定要操作的位置。 总结起来,当我们在使用std set容器处理自定义类型的元素时,我们需要定义一个比较函数(仿函数)来指定排序规则,并且可以使用const iterator来遍历容器中的元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【C++】集合(set与multiset)的使用及set自定义类型排序](https://blog.csdn.net/AAADiao/article/details/130972036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C++:set容器自定义数据类型自定义排序](https://blog.csdn.net/prolop87/article/details/124364102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值