treeset可以重复吗_java容器(五)HashSet与TreeSet
了解过HashMap和TreeMap后,学习HashSet和TreeSet就显得很简单了——二者底层分别基于前者来实现。
对于HashSet:
至于其余的方法,也基本上是调用了HashMap的方法。
public boolean add(E e) {return map.put(e, PRESENT)==null;}
public void clear() {map.clear();}
public boolean remove(Object o) {return map.remove(o)==PRESENT;}
//。。。。。。
值得注意的就是HashSet的无序不可重复性,测试如下:
package myHashMap;
import java.util.HashSet;
import java.util.Set;
public class TestHashSet {public static void main(String[] args) {Set<String> hashSet=new HashSet<>();hashSet.add("a");hashSet.add("b");hashSet.add("a");System.out.println(hashSet);System.out.println(hashSet.size());}}
对于TreeSet:
对比HaseSet——>TreeSet底层是有TreeMap实现,具有有序不可重复性的特点。
注:所谓无序和有序我的理解是——输出是否可以与插入元素顺序无关,无关则是有序,有关则是无序,就比如HashSet输出时的顺序总是和插入顺序一致,而TreeSet就可以按照key值排序。
测试如下:
package myHashMap;
import java.util.Set;
import java.util.TreeSet;
public class TestTreeSet {public static void main(String[] args) {Set<Integer> treeset = new TreeSet<>();treeset.add(300);treeset.add(100);treeset.add(400);System.out.println(treeset);Set<Emp1> treeset1=new TreeSet<>();treeset1.add(new Emp1(10, "张三", 2000));treeset1.add(new Emp1(2, "王五", 1000));treeset1.add(new Emp1(1, "李二", 2000));System.out.println(treeset1);}}class Emp1 implements Comparable<Emp1> {public Emp1(int id, String name, double salary) {super();this.id = id;this.name = name;this.salary = salary;}int id;String name;double salary;@Overridepublic String toString() {return "id=" + this.id + " name=" + this.name + " salary=" + this.salary;}@Overridepublic int compareTo(Emp1 o) {if (this.salary > o.salary) {return 1;} else if (this.salary < o.salary) {return -1;} else {if (this.id > o.id) {return 1;} else if (this.id < o.id) {return -1;} else {return 0;}}}}
treeset可以重复吗_java容器(五)HashSet与TreeSet相关推荐
- HashSet 和 TreeSet 及 Map 集合的简单方法,含程序。
HashSet 是一个什么样的容器呢? 在给HashSet容器对象添加元素时,利用散列函数.是无序的,不能添加相同元素的. package Set;import java.util.HashSet; ...
- Java容器源码分析-HashSet vs TreeSet vs LinkedHashSet
2019独角兽企业重金招聘Python工程师标准>>> 这几天看了下容器的源码,总结一下HashSet vs TreeSet vs LinkedHashSet的区别, 如下图,col ...
- Java容器---Set: HashSet TreeSet LinkedHashSet
1.Set接口概述 Set 不保存重复的元素(如何判断元素相同呢?).如果你试图将相同对象的多个实例添加到Set中,那么它就会阻止这种重复现象. Set中最常被使用的是测试归属性,你可以 ...
- 集合{LinkedHashMap TreeMap HashSet LinkedHashSet TreeSet 快速失败机制 ConcurrentHashMap CAS 多线程协同扩容}(二)
目录标题 LinkedHashMap Map集合框架结构体系图 什么是LinkedHashMap Linked 链式 的意思 HashMap "哈希映射"的意思 LinkedHas ...
- HashSet、TreeSet、TreeMap实现原理
一.HashSet底层实现 HashSet实现了Set接口,不允许有重复元素,因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值 ...
- java容器集合类的区别用法_Java容器笔记(二):不同集合实现类的特点与区别...
package java.util包中的Collection相关接口和类如下图: Collection.png 仅讨论Java.util包中的常见集合类,不涉及java.util的子包concurre ...
- Java—Set集合详解(HashSet/LinkedHashSet/TreeSet/EnumSet)
关注微信公众号:CodingTechWork,一起学习进步. Set集合介绍 Set集合的概念 Set集合类似于一个容器,程序把很多对象保存到Set集合中,Set集合对添加顺序不记录,当有重复的对 ...
- java 有序容器_Java 容器集合框架概览
Java Collections Framework 集合的概念 集合collection,有时叫做容器container,把多个元素组成一个单元. 早期的Java (pre-1.2) 中包含了Vec ...
- java容器类添加元素失败失败_java容器 Set
Set的简介 Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类. 在判断重复元素的时候,Set集合会调用hashCode( ...
最新文章
- 秀秀博客大赛50强的礼物
- JAVA怎么创建对象组_java – 如何根据特定字段创建一组有序的对象?
- SparkSQL概述
- Java 洛谷 P2089 烤鸡
- mysql insert慢_MySQL insert语句慢查询的优化
- 如何在 Centos7 x86_64下将vim一键配置为一款强大的C++,IDE
- 3.6 Spark安装与体验
- java Comparable 和 Cloneable接口
- 计算机学院学生会会徽设计,学生会会徽设计策划书
- Netty权威指南——WebSocket协议开发
- Android pda出入库管理,仓库PDA扫描出入库管理系统
- GitLab使用教程(详细)(转载)
- CMS漏洞(发货100CMS、SHECMS、ZHCMS、MACCMS)详解实战
- c语言查看cpu温度代码_C语言获取CPU核心温度
- 一个劣质无线鼠标接收器导致笔记本无线网络连接出现故障
- Windows10无法启动防火墙
- 查看SQL语句执行耗费的时间
- 数据库防火墙的性能和高可用性分析
- Java实现扑克牌游戏(简易炸金花)
- 雷军、马云、马化腾控股的公司