Java 基础 - Set接口 及其实现类HashSet/LinkedHashSet/TreeSet
笔记:
/**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的更多相关文章
- Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出
Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /T ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
- Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...
- Java基础-面向接口(interface)编程
Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
- Java基础-类加载机制与自定义类Java类加载器(ClassLoader)
Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...
- java集合框架之几种set(HashSet LinkedHashSet TreeSet )
参考http://how2j.cn/k/collection/collection-sets/691.html#nowhere HashSet LinkedHashSet TreeSet HashSe ...
- java集合类型接口和实现类个人总结
转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...
随机推荐
- Bugly——Xuporter问题处理
Unity接入Bugly 用其原生的package文件导入,结果在Ios打包时报错,找不到相对应的库. 经过排查: 这个地方如果不加拦截的话,项目中所有的 .projmods文件都会按照xupor ...
- Spring 使用复选选按钮
模型层需要提供数据选项,设置错误信息 关键代码 @NotNull @Size(min = 1, max = 5, message = "选择课程") private String[ ...
- 乐字节Java反射之二:实例化对象、接口与父类、修饰符和属性
大家好,小乐继续接着上集:乐字节Java反射之一:反射概念与获取反射源头Class 这次是之二:实例化对象.接口与父类.修饰符和属性 一:实例化对象 之前我们讲解过创建对象的方式,有new .克隆.反 ...
- springboot集成elk 三:springboot + Elasticsearch Rest-Client
注: 该集成方式,对Elasticsearch无版本限制,但是需要自行封装请求,解析结果等. <dependency> <groupId>org.elasticsearch. ...
- 在Settings.db数据库中添加一项新的设置(Settings默认设置)
Settiings的数据默认存放在com.android.providers.settings/database/settings.db中 数据库中的默认数据在frameworks/base/pack ...
- BP(back propagation)误差逆传播神经网络
[学习笔记] BP神经网络是一种按误差反向传播的神经网络,它的基本思想还是梯度下降法,中间隐含层的误差和最后一层的误差存在一定的数学关系,(可以计算出来),就像误差被反向传回来了,所以顾名思义BP.想 ...
- 剑指offer36:两个链表的第一个公共结点
1 题目描述 输入两个链表,找出它们的第一个公共结点. 2 思路和方法 方法一: 用两个指针同时从两个链表的表头开始走,当走到自己的链表结尾的时候开始从另一个链表的表头开始向后走.终止条件就是两个指针 ...
- go 函数定义
-------------------------------------------- package main import "fmt" func add(x int, y i ...
- python 虚拟环境 venv 简单用法
Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv.该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持.每一个虚拟环 ...
- S04_CH01_搭建工程移植LINUX/测试EMMC/VGA
S04_CH01_搭建工程移植LINUX/测试EMMC/VGA 1.1概述: 本章内容是在已经提供安装了VIVADO2015.4 的ubuntu系统下,进行.大家可以下周我们已经提供的虚拟机镜像,我们 ...