本篇文章为大家展示了如何在Java中使用设置集合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
<强>设置接口简介
强>
设置接口和列表接口一样,同样继承自收集接口,它与收集接口中的方法基本一致,并没有对收集接口进行功能上的扩充,它是比收集接口更加严格了。与列表接口不同的是,套接口元素无序,并且都会以某种规则保证存入的元素不出现重复。
设置接口主要有两个实现类,分别是HashSet和TreeSet。其中,HashSet根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能.TreeSet则是以二叉树的方式来存储元素,它可以实现对集合中的元素进行排序
<强> HashSet集合
强>
HashSet是集接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来计算对象的哈希值,从而确定元素的存储位置。如果此哈希值相同,再调用对象的equals()方法来确保该位置没有重复元素这里集合与列表集合存取元素的方式都一样。
通过一个案例来演示HashSet集合的用法:
public class Example01 { public 才能;static  void main (String [], args), { ,,,HashSet set =, new HashSet (); ,,,set.add(“老大“); ,,,set.add(“老二“); ,,,set.add(“老三“); ,,,set.add(“老二“); ,,,Iterator it =, set.iterator (); ,,,,(it.hasNext ()), { ,,,,,Object obj =, it.next (); ,,,,,System.out.println (obj); ,,,} ,,} }
<>强结论:强>
当向集合中存入元素时,为了保证HashSet正常工作,要求在存入对象时,重写对象类中的hashCode和=()方法。
上述案例将字符串存入HashSet时,字符串类已经重写了hashCode()和equals()方法。但是如果将学生对象存入HashSet,结果又会怎样呢?
class 学生{ String 才能;id; String 才能,名字; public 才能;学生(String id, String 名称),{ ,,,超级(); ,,,this.id =, id; ,,,this.name =,名称; ,,} @Override才能 public 才能;String  toString (), { ,,,return id +“:“+名称; ,,} @Override才能 public 才能;int  hashCode (), { ,,,return id.hashCode(),,,,,//返回id属性的哈希值 ,,} @Override才能 public 才能;boolean  equals (Object obj), { ,,,如果(却;能够==,obj),{,,,//判断是否是同一个对象 ,,,,,return ,真的,,,,,//如果是,直接返回现实 ,,,} ,,,如果(! (obj instanceof 学生),{,,,//判断对象是为学生类型 ,,,,,return 假的,,,,,//如果对象不是学生类型返回错误的 ,,,} ,,,Student stu =,(学生),obj,,,,,//将对象强转为学生类型 ,,,boolean b =, this.id.equals (stu.id);,,,,//判断id值是否相同 ,,,return b;,,//返回判断结果 ,,} } public class  Example02 { public 才能;static  void main (String [], args), { ,,,HashSet set =, new HashSet (); ,,,set.add (new 学生(“1“,“老王“)); ,,,set.add (new 学生(“2“,“老三“)); ,,,set.add (new 学生(“2“,“老三“)); ,,,System.out.println(组); ,,} }
学生类重写了对象类的hashCode()和equals()方法。在hashCode()方法中返回id属性的哈希值,在=()方法中比较对象的id属性是否相等,并返回结果。当调用HashSet集合的添加()方法添加stu3对象时,发现它的哈希值与stu2对象相同,而且stu2.equals (stu3)返回true.HashSet集合认为两个对象相同,因此重复的学生对象对成功去除了。
上述内容就是如何在Java中使用设置集合,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。