转自:http://www.cnblogs.com/beyondwcm/archive/2007/11/08/953440.html
1|——SortedSet接口——TreeSet实现类
2Set接口——|——HashSet实现类
3|——LinkedHashSet实现类
4HashSet
5此类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。
6此类为基本操作提供了稳定性能,这些基本操作包括add、remove、contains和size,假定哈希函数将这些元素正确地分布在桶中。对此集合进行迭代所需的时间与HashSet实例的大小(元素的数量)和底层HashMap实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
7
8我们应该为要存放到散列表的各个对象定义hashCode()和equals();
9importjava.util.HashSet;
10importjava.util.Iterator;
11publicclassHashSetTest{
12publicstaticvoidmain(String[]args)
13{
14HashSeths=newHashSet();
15/*hs.add("one");
16hs.add("two");
17hs.add("three");
18hs.add("four");*/
19hs.add(newStudent(1,"zhangsan"));
20hs.add(newStudent(2,"lishi"));
21hs.add(newStudent(3,"wangwu"));
22hs.add(newStudent(1,"zhangsan"));
23
24Iteratorit=hs.iterator();
25while(it.hasNext())
26{
27System.out.println(it.next());
28}
29}
30}
31classStudent//HashSet要重写hashCode和equals方法
32{
33intnum;
34Stringname;
35Student(intnum,Stringname)
36{
37this.num=num;
38this.name=name;
39}
40publicStringtoString()
41{
42return"num:"+num+"name:"+name;
43}
44publicinthashCode()
45{
46returnnum*name.hashCode();
47}
48publicbooleanequals(Objecto)
49{
50Students=(Student)o;
51returnnum==s.num&&name.equals(s.name);
52}
53}
54
55TreeSet
56此类实现Set接口,该接口由TreeMap实例支持。此类保证排序后的set按照升序排列元素,根据使用的构造方法不同,可能会按照元素的自然顺序进行排序,或按照在创建set时所提供的比较器进行排序。
57是一个有序集合,元素中安升序排序,缺省是按照自然顺序进行排序,意味着TreeSet中元素要实现Comparable接口;
58我们可以构造TreeSet对象时,传递实现了Comparator接口的比较器对象.
59importjava.util.*;
60publicclassTreeSetTest{
61publicstaticvoidmain(String[]args)
62{
63//TreeSetts=newTreeSet();
64TreeSetts=newTreeSet(newStudents.compareToStudent());
65ts.add(newStudents(2,"zhangshan"));
66ts.add(newStudents(3,"lishi"));
67ts.add(newStudents(1,"wangwu"));
68ts.add(newStudents(4,"maliu"));
69
70Iteratorit=ts.iterator();
71while(it.hasNext())
72{
73System.out.println(it.next());
74}
75}
76}
77classStudentsimplementsComparable
78{
79intnum;
80Stringname;
81Students(intnum,Stringname)
82{
83this.num=num;
84this.name=name;
85}
86staticclasscompareToStudentimplementsComparator//定义一个内部类来实现比较器
87{
88publicintcompare(Objecto1,Objecto2){
89Studentss1=(Students)o1;
90Studentss2=(Students)o2;
91intrulst=s1.num>s2.num?1:(s1.num==s2.num?0:-1);
92if(rulst==0)
93{
94rulst=s1.name.compareTo(s2.name);
95}
96returnrulst;
97}
98}
99publicintcompareTo(Objecto)//写具体的比较方法
100{
101intresult;
102Studentss=(Students)o;
103result=num>s.num?1:(num==s.num?0:-1);
104if(result==0)
105{
106result=name.compareTo(s.name);
107}
108returnresult;
109}
110publicStringtoString()
111{
112returnnum+":"+name;
113}
114}
115总结
116HashSet是基于Hash算法实现的,其性能通常优于TreeSet,我们通常都应该使用HashSet,在我们需要排序的功能时,我门才使用TreeSet
分享到:
相关推荐
NULL 博文链接:https://elvin-chu.iteye.com/blog/1942033
HashSet和TreeSet_围墙之外.rar
HashSet和TreeSet的区别
主要介绍了详解Java中HashSet和TreeSet的区别的相关资料,需要的朋友可以参考下
主要介绍了HashSet和TreeSet使用方法的区别解析,具有一定借鉴价值,需要的朋友可以参考下
day18-集合-中(HashSet&TreeSet&比较器).zip
简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相 等注意,如果要把一个对
比较遗憾的是,TreeSet 虽然实现起来也比较简单,但它有着和 HashSet 一样的问题,会自动排序 5:LinkedHashSet去重(有序) 从代码和执行结果可以看出,LinkedHashSet 是到目前为止,实现比较简单,且最终生成的新...
treemap treeset hashset hashmap 简要介绍
HashSet 和 TreeSet 有什么区别? HashMap 和 TreeMap 有什么区别? 什么是迭代器?如何使用它来遍历集合? 什么是 fail-fast 机制? 如何使用 Collections 类对集合进行排序? 什么是 Comparable 和 Comparator ...
1) 掌握Java集合框架的概念以及几种具体实现:ArrayList, LinkedList, HashSet, TreeSet, PriorityQueue; 2) 掌握Java集合框架的映射的概念以及映射的两种基本实现:HashMap,TreeMap; 3)掌握枚举类型以及枚举集...
java集合在日常开发中经常用到,对基础的掌握尤其重要,其中List,Set,Map的作用以及使用的场景和分类描述,其中Arraylist 与 LinkedList 区别,HashSet与TreeSet与LinkedHashSet对⽐,LinkedHashMap和HashMap,...
题目(求字符串的非空子串数量) 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。...简谈HashSet和TreeSet
这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...
疯狂的java讲义 源码 这是Java学习中的一些代码以及重要的知识点 1 2018-10-16 熟悉idea中github使用 2 2018-10-17 添加.ignore插件,忽略不必要的文件 ...Java集合,HashSet和TreeSet(无序和有序) 7 2
主要介绍了从源码的角度浅析HashMap、TreeMap元素的存储和获取元素的逻辑;从Map与Set之间的关系浅析常用的Set中元素的存储和判断是否重复的逻辑,需要的朋友可以参考下
ava基础 基础知识 面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 ...Java集合详解7:HashSet,TreeSet与LinkedHashSet Java集合详解8:Java集合类细节精讲 JavaWeb
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。
集合笔记 list arraylist集合 linkedlist集合 set hashset集合 treeset集合 map hashmap集合 terrset集合 不可变集合