笔记:

/**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. 基本 Java Bean

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  2. Sping 补充完成修改功能

    1.视图层完整示例 <form action="#" th:action="@{/update/{id}(id=${user.id})}" th:obje ...

  3. ThinkPHP如何在控制器中调用命令

    前段时间因为业务需求,使用TP的command开发了几个模块,期间测试一下在控制器中调用命令的方式,发现一些问题记录一下 官方文档: <?php namespace app\index\cont ...

  4. dubbo40道面试题

    1.Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目. 面试官问你如果这个都不清楚,那下面的就没必要问了.官网:h ...

  5. ufile开公钥私钥

    https://docs.ucloud.cn/storage_cdn/ufile/guide/token登陆UCloud官方控制台,进入UFile—令牌管理

  6. pandas 索引笔记

    import pandas as pd import numpy as np s = pd.Series(np.random.rand(5), index=list('abcde')) # 创建序列, ...

  7. STM32中断应用总结

    STM32中断很强大,STM32中断可以嵌套,任何外设都可以产生中断,其中中断和异常是等价的. 中断执行流程: 主程序执行过程可以产生中断去执行中断的内容(保护现场),然后在返回继续执行中断. 中断分 ...

  8. Django入门(上)

    一.Web应用程序 1.web应用程序介绍 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件. 应用程序有两种模式 ...

  9. Asp.net core 学习笔记 ( ef core transaction scope & change level )

    ef core 有 unit of work 的概念,当我们 save change 时会自动使用 transaction 确保更新的一致性. 隔离级别是默认的 read committed 不允许脏 ...

  10. R语言错误的提示(中英文翻译)

    # Chinese translations for R package # Copyright (C) 2005 The R Foundation # This file is distribute ...