笔记:

/**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. OpenGL学习笔记 之三 (简单示例 太阳月亮地球)

    #include<glut.h> // 太阳.地球和月亮 // 假设每个月都是30天 // 一年12个月,共是360天 ;//day的变化:从0到359 void myDisplay(vo ...

  2. Bean的三种实例化方式

    在面向对象程序中,如要使用某个对象,就需要先实例化这个对象.同样的,在Spring中,要想使用容器中的Bean,也需要实例化Bean.实例化Bean有三种方式,分别是:构造器实例化.静态工厂实例化.实 ...

  3. Vue 组件系统

    vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. 每一个新技术的诞生,都是为了解决 ...

  4. PAT(B) 1018 锤子剪刀布(C:20分,Java:18分)

    题目链接:1018 锤子剪刀布 分析 用一个二维数组保存两人所有回合的手势 甲乙的胜,平,负的次数刚好相反,用3个变量表示就可以 手势单独保存在signs[3]中,注意顺序.题目原文:如果解不唯一,则 ...

  5. 工具——eclipse debug小技巧

    1.开启调试: 在代码编辑处右键单击,在弹出菜单中点击Debug As开始调试 2.几个快捷键: F5:跟入Step into, 一般会跟踪进入到调用函数的函数体,Step Over则不会跟踪进入,直 ...

  6. C# SHA512和Base64加解密方法

    /// <summary> /// Get SHA512 Hash From String /// </summary> /// <param name="or ...

  7. 【爬虫集合】Python爬虫

    一.爬虫学习教程 1. https://www.jianshu.com/u/c32d557edfa3 2. WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个 ...

  8. (一)XML基础(1)

    一.什么是XML? XML是指可扩展标记语言(eXtensible MarkupLanguage),它是一种标记语言.它被设计的宗旨是描述数据(XML),而非显示数据(HTML). 目前遵循的是W3C ...

  9. c#基础知识梳理(三)

    上期回顾 - https://www.cnblogs.com/liu-jinxin/p/10824638.html 一.方法 一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块.每一个 C ...

  10. wstngfw中配置snort

    wstngfw中配置snort 概述 Snort是入侵检测和预防系统.它可以将检测到的网络事件记录到日志并阻止它们.Snort使用称为规则的检测签名进行操作. Snort规则可以由用户自定义创建,或者 ...