Set
发布日期:2021-06-27 12:55:56
浏览次数:30
分类:技术文章
本文共 3379 字,大约阅读时间需要 11 分钟。
文章目录
概述
java.util.Set 接口和java.util.List 接口一样,同样继承自Collection 接口,它与Collection 接口中的方法基本一致,并没有对Collection 接口进行功能上的扩充,只是比Collection 接口更加严格了。
Set接口中元素无需,并且不可重复
HashSet
java.util.HashSet
是Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)
HashSet 是根据对象的哈希值来确定元素在集合中的存储位置,具有良好的存取和查找性能。
保证元素唯一性的方式依赖于: hashCode
与equals
方法。
package Demo2;import java.util.HashSet;import java.util.Iterator;public class Demo2 { public static void main(String[] args) { HashSetset = new HashSet<>(); set.add("锄禾日当午"); set.add("汗滴禾下土"); set.add("谁知盘中餐"); set.add("粒粒皆辛苦"); set.add("锄禾日当午"); /* Iterator iterator = set.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); }*/ for (String s:set) { System.out.println(s); } }}
由于HashSet利用散列表存储,因此无法保证存储顺序,是无序的。
并且添加重复元素也是无效的TreeSet
TreeSet是属于排序的子类,因此TreeSet能够保存元素的有序性。
注意:此处的有序并非指按照输入顺序排序,而是保证Unicode排序顺序
package Demo2;import java.util.Set;import java.util.TreeSet;public class Demo3 { public static void main(String[] args) { Setall = new TreeSet<>(); all.add("D"); all.add("X"); all.add("A"); System.out.println(all); }}//输出:[A, D, X]
虽然在增加元素的时候属于无序的操作,但是增加之后却可以为用户进行排序功能的实现。
当需要比较自己定义的类,则需要实现Comparable接口,并根据需要叙述排序规则
package Demo2;import java.util.Objects;import java.util.Set;import java.util.TreeSet;public class Demo3 { public static void main(String[] args) { TreeSetdata = new TreeSet<>(); Person p1 = new Person("张三",18); Person p2 = new Person("李四",20); data.add(p1); data.add(p2); for (Person p:data){ System.out.println(p); } } static class Person implements Comparable { private String name; private int age; @Override public int compareTo(Person o) { //this与o比较 //返回的数据 负数 this小/0相等/正数this大 if (this.age>o.age){ return 1; }else if(this.age == o.age){ return 0; }else { return -1; } } public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(name, age); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }}
LinkedHashSet
HashSet可以保证元素唯一,但元素存放进去是无序的。当需要保证有序的时候,则可以使用HashSet下面的一个子类LinkedHashSet
,它是链表和哈希表组合的一个数据存储结构。
转载地址:https://blog.csdn.net/weixin_43454088/article/details/116379129 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月06日 16时13分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SAP C4C的扩展字段添加到UI之后,还需要额外的步骤,才能将其添加到OData里
2019-04-27
SAP C4C - the entity BO node XXXX is unknown
2019-04-27
使用url参数传递SAP Analytics Cloud filter的一个例子
2019-04-27
从SAP Leonardo到SAP Data Intelligence
2019-04-27
在SAP Data Intelligence Modeler里创建新的pipeline
2019-04-27
SAP Data Intelligence上的Python Operator
2019-04-27
SAP API开发方法大全
2019-04-27
SAP Analytics Cloud里基于dimension的calculation
2019-04-27
SAP Data Intelligence Repository里的模型路径
2019-04-27
SAP Data Intelligence Graph使用浏览器访问的url规范
2019-04-27
SAP Data Intelligence API执行出错的排错之道
2019-04-27
SAP Data Intelligence Graph json源代码的结构分析
2019-04-27
使用类似搭积木的低代码开发方式进行SAP API开发
2019-04-27