笔记:

/**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. 【FFMPEG】I,P,B帧和PTS,DTS时间戳的关系

    FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp). 顾名思义,前者是解码的时间,后者是显示的时间.要仔细理解这两个 ...

  2. 【数据库开发】在Windows上利用C++开发MySQL的初步

    [数据库开发]在Windows上利用C++开发MySQL的初步 标签(空格分隔): [编程开发] Windows上在上面配置环境的基础上开展一个小demo链接数据库,没想到中间也出现了这么多的问题,简 ...

  3. FineReport工具

    PostgreSQL链接问题: 正常安装FineReport工具和PostgreSQL数据库之后,在FineReport工具当中链接数据库显示连接失败的原因是因为FineReport安装包里面没有Po ...

  4. java连接zookeeper实现zookeeper的基本操作

    Java服务端连接Zookeeper,进行节点信息的获取,管理…,整理成一个基本工具, 添加依赖: <dependency> <groupId>org.apache.zooke ...

  5. php使用ffmpeg获取上传的视频的时长,码率等信息

    视频上传是程序员在很多时候需要用到的操作,然而上传完视频肯定要获得一些视频的详细信息,php本身是不支持信息获取的 ,所以采用ffmpeg第三方插件 首先你需要下载ffmpeg文件:官网地址:http ...

  6. pandas数据结构之基础运算笔记

    import pandas as pd import numpy as np s = pd.Series([1,3,5,6,8],index=list('acefh')) s.index # 读取行索 ...

  7. 2.ASP.NET Core Docker学习-镜像容器与仓库

    Docker下载 https://www.docker.com/community-edition 社区版 (CE) 下载完后安装,运行 docker --version 可查看版本 基本命令: 下面 ...

  8. Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)

    Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...

  9. Codeforces 1245 E. Hyakugoku and Ladders

    传送门 显然这个图是个 $DAG$ ,那么就可以考虑跑 $dp$ 了 先考虑没有梯子的情况,首先把每个位置标号,越后面的位置编号越小,终点位置编号为 $1$ 那么从终点往起点 $dp$ ,枚举当前位置 ...

  10. (八)shiro之jdbcRealm

    pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...