笔记:

/**Set接口 及其实现类
* 公用操作同Collection:
* * ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法,
* * ⑤ iterator 来返回迭代器对象⑥addall() 和removeall() ,添加或者删除全部!
* * ⑦ Object[] toArray() ,将集合转换为Object数组
* 1.实现类HashSet 使用哈希存储元素,高性能,没有排序!(随机存储的!)
* a.构造方法: HashSet()/HashSet(Collection c); HashSet(初始容量[,装填因子])
* 2.实现类LinkedHashSet :哈希表和链表实现了Set接口,具有可预测的迭代次序;
* 这种实现不同于HashSet,它维持于所有条目的运行双向链表;
* 3.接口SortedSet : 有序对象的集合,集合里所有元素对象类型要求一致,
* a. first()/last()
* b. subset(begin,end) ,返回一个子集合, 下标左闭右开
* c.SortedSet<E> headSet/tailed(E element) ,返回一个 小于/大于element 的 SortedSet集合;
* 4.接口SortedSet实现类TreeSet :使用红黑树进行操作,基于元素的值对元素排序,操作比HashSet慢!
* (有序输出,数字从小到大,字符串按ASCII从小到大排序)
* a.构造方法: TreeSet(collection c) ,集合中自然元素按照自然顺序(从大到小)进行排序
* b.指定排序规则: TreeSet(Comparator c) ,创建空树,按照c 的规则进行排序
* ------------------------------------
* 5.对象排序 (记到下一章去了)
* a.实现Comparable 接口
*
* b.比较器Comparator
*/

测试代码:

public class TestSet {

    public static void main(String[] args) {
HashSet<String> s1= new HashSet<String>();
s1.add("hello");s1.add("ssdf");s1.add("dadsasd");s1.add("6666asda9");s1.add("666sada67");
TestSet.test(s1);
TestSet.test(s1);
//////////////////
LinkedHashSet<String> s2= new LinkedHashSet<String>();
s2.add("hello");s2.add("ssdf");s2.add("dadsasd");s2.add("6666asda9");s2.add("666sada67");
TestSet.test(s2);
///////Test TreeSet///////////
TreeSet<Integer> s3=new TreeSet<Integer>();
s3.add(34534);s3.add(345341);s3.add(345342);s3.add(34534);s3.add(34);s3.add(84);
test(s3);
TreeSet<String> s4=new TreeSet<String>();
s4.add("ass");s4.add("ASS");s4.add("ab");s4.add("sssssss");s4.add("SSSSSS");s4.add("zZZZ");
test(s4);
}
static void test(Collection s){
for(Object o:s){
System.out.print(o+"\t");
} System.out.println("---------->>"+s.getClass()+"---------");
}
}

测试结果:

666sada67    ssdf    dadsasd    hello    6666asda9    ---------->>class java.util.HashSet---------
666sada67 ssdf dadsasd hello 6666asda9 ---------->>class java.util.HashSet---------
hello ssdf dadsasd 6666asda9 666sada67 ---------->>class java.util.LinkedHashSet---------
34 84 34534 345341 345342 ---------->>class java.util.TreeSet---------
ASS SSSSSS ab ass sssssss zZZZ ---------->>class java.util.TreeSet---------

Java 基础 - Set接口 及其实现类HashSet/LinkedHashSet/TreeSet的更多相关文章

  1. Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出

    Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /T ...

  2. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  3. Java基础十--接口

    Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

  4. Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...

  5. Java基础-面向接口(interface)编程

    Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

  6. Java NIO Path接口和Files类配合操作文件

    Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...

  7. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  8. java集合框架之几种set(HashSet LinkedHashSet TreeSet )

    参考http://how2j.cn/k/collection/collection-sets/691.html#nowhere HashSet LinkedHashSet TreeSet HashSe ...

  9. java集合类型接口和实现类个人总结

    转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...

随机推荐

  1. 扩展方法和Enumerable

    .NET中扩展方法和Enumerable(System.Linq) LINQ是我最喜欢的功能之一,程序中到处是data.Where(x=x>5).Select(x)等等的代码,她使代码看起来更好 ...

  2. 安卓AES加密

    一:什么是AES加密 AES高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准. ...

  3. printf特殊用法

    printf("%*.*lf\n", a, b, c); //表示a宽距,保留b位小数 用这种方法可以通过输入控制a和b

  4. SC创建服务编写bat脚本

    新建bat脚本,并写入一下文本保存 sc create "DevFast.SupportGPSWarmService" binpath= "%cd%\DevFast.Su ...

  5. 《Mysql 索引 - 概述》

    一:索引的目的 - 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样. 二:InnoDB 索引模型 - InnoDB 采用 B+树 的数据结构进行存储. - 例如,我们建立一张表,分析他的数 ...

  6. GCC 高版本7.4 编译链接 boost 报错 boost::thread::XXX’未定义的引用 解决方法

    背景:开发中的项目之前一直用GCC4.8,boost库1.48版本的开发环境.现在因业务需求,需要更换GCC7.4,boost库1.70. 问题:可以正常编译BOOST的链接库文件,但是链接时候报错. ...

  7. (七)springmvc之ModelAttribute注解

    一.没有使用@ModelAttribute的Controller方法. @RequestMapping("/save") public String save(User user) ...

  8. 奇妙的算法【10】TX--有效号码、最,小耗时、最小差值、差值输出、异或结果

    昨晚刚刚写的几道算法题,难度也还行,就是全部AC有些困难,当时第一题AC.第二题AC 60%,第四题AC 40%,第五题没有时间写完了,这个应该全部AC了:其中第三题没有写出来 1,是否存在符合规范的 ...

  9. Html Agility Pack 使用 XPath 选择器

    想做一个爬虫程序,以前用的一直使用CSS选择器的html解析插件,最近做的项目想使用 Html Agility Pack 来做解析 Html Agility Pack使用 XPath 和 Linq 来 ...

  10. Google Drive 和 Dropbox 同步同一个文件夹目录

     Dropbox 也是非常棒的同步工具,例如先进的增量上传或者更开放的 API 等.可是为什么不曾想过把 Google Drive 和 Dropbox 同时使用呢,我是说,让这两者同时云同步同一个文件 ...