【java】学习路径27-HashSet、TreeSet,HashMap
学习路径20-27的所有源代码都可以在此下载
https://www.aliyundrive.com/s/cg8jTRbg6vy
HashSet、TreeSet中,Set表示集合,特性在于:无序的、不重复的。
我们通过一个实例快速学习HashSet的内容
import java.util.HashSet;
import java.util.Iterator;
public class HashSetDemo {
    public static void main(String[] aa){
        HashSet set = new HashSet();
        set.add("remoo");
        set.add("remoo");
        set.add("llkkjj");
        set.add("llkkjj");
        set.add("remoo.net");
        //使用迭代器遍历输出HashSet的数据
        Iterator itt = set.iterator();
        while(itt.hasNext())
            System.out.println(itt.next());
    }
}
输出结果:

分析结果:
1、无重复成员
2、无须
HashSet知识点与解释:
1、我们即便使用add方法多次添加同一个成员,HashSet也只会存储一个,即不重复。
2、HashSet没有get方法,不能通过索引寻找内容,因为他是无序的。
TreeSet的用法和HashSet是一样的,不同在于其实现的方式。
1. HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的,只不过Set用的只是Map的key
2. Map的key和Set都有一个共同的特性就是集合的唯一性.TreeMap更是多了一个排序的功能.
3. hashCode和equal()是HashMap用的, 因为无需排序所以只需要关注定位和唯一性即可.
a. hashCode是用来计算hash值的,hash值是用来确定hash表索引的.
b. hash表中的一个索引处存放的是一张链表, 所以还要通过equal方法循环比较链上的每一个对象
才可以真正定位到键值对应的Entry.
c. put时,如果hash表中没定位到,就在链表前加一个Entry,如果定位到了,则更换Entry中的value,并返回旧value
4. 由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的.
a. Comparator可以在创建TreeMap时指定
b. 如果创建时没有确定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口.
c. TreeMap是使用Tree数据结构实现的,所以使用compare接口就可以完成定位了.
一个案例学会HashMap的简单使用:
import java.util.HashMap;
public class HashMapDemo {
    public static void main(String[] aa){
        HashMap map = new HashMap();
        map.put("remo",666);
        map.put("lssy",520);
        map.put("wzzj",250);
        //如果put重复添加,则会覆盖上面的value,
        map.put("remo",520);
        System.out.println(map.get("remo"));
        //如果输入不存在的值,则会返回NULL
        System.out.println(map.get("remoo"));
        //keySet应该是随机存储的,具体不明。
        for(Object key:map.keySet())
            System.out.println(key+"-"+map.get(key));
        //values应该是按顺序存储的,具体不明。
        for (Object value :map.values())
            System.out.println(value);
        System.out.println(map.containsKey("remo"));
        System.out.println(map.containsValue(666));
    }
}												
											【java】学习路径27-HashSet、TreeSet,HashMap的更多相关文章
- Java学习路径及练手项目合集
		
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 实验楼上的[Java 学习路径]中将首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE ...
 - Java学习路径(抛光砖)
		
这就是我刚刚在五孔问答中找到的Java学习路线图抛光砖价格.我个人认为,这条Java学习路线是可以的.它是2018年相对较新的Java学习路线,更符合企业就业标准. Java学习路径的第一阶段:Jav ...
 - Java学习路径:不走弯路,这是一条捷径
		
1.如何学习编程? JAVA是一种平台.也是一种程序设计语言,怎样学好程序设计不只适用于JAVA,对C++等其它程序设计语言也一样管用.有编程高手觉得,JAVA也好C也好没什么分别,拿来就用.为什么他 ...
 - java学习笔记27(File类)
		
File类: 定义:文件和目录径的抽象表示形式, Java中将路径或者文件封装成File对象 1.File类的静态成员变量 package com.zs.Demo2; import java.io.F ...
 - java学习第17天(TreeSet HashSet)
		
Set集合的特点(与ArrayList相比) 无序,唯一 主要学习它的两个子类 HashSet集合 A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode() ...
 - Java学习笔记27(集合框架一:ArrayList回顾、Collection接口方法)
		
集合:集合是java中提供的一种容器,可以用来存储多个数据 集合和数组的区别: 1.数组的长度是固定的,集合的长度是可变的 2.集合中存储的元素必须是引用类型数据 对ArrayList集合的回顾 示例 ...
 - Java学习路径
		
-------第一部分:基础语法-------- 1.输出语句 1.1 hello world 1.2 拼接输出.换行和不换行输出 1.3 拼接变量输出 2.输入语句: 2.1 定义变量,赋值(整数. ...
 - 【JDBC】学习路径1-JDBC背景知识
		
学习完本系列JDBC课程后,你就可以愉快使用Java操作我们的MySQL数据库了. 各种数据分析都不在话下了. 第一章:废话 JDBC编程,就是写Java的时候,调用了数据库. Java Databa ...
 - Java集合Set、Map、HashSet、HashMap、TreeSet、TreeMap等
		
1.Set和Map的关系: Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个key-value对组成的集合. Set的集合继承体系: Map关系集合 Map集合的key特征:所有key ...
 
随机推荐
- php 二维数组转换一维数组
			
$result = array_reduce($res, function ($result, $value) { return array_merge($result, array_values($ ...
 - Vue 3.0 有哪些新特性值得我们提前了解
			
一.迎接 Vue 3.0 简介  Vue.js 作者兼核心开发者尤雨溪宣布 Vue 3.0 进入 Beta 阶段. 已合并所有计划内的 RFC 已实现所有被合并的 RFC Vue CLI 现在通过 ...
 - SAP 文本框多行输入
			
REPORT zjw_test01. CONSTANTS: gc_text_line_length TYPE i VALUE 72. TYPES: text_table_type(gc_text_li ...
 - easyui combobox重复渲染问题
			
当一个页面有两个easyui combobox存在时,并且同时给两个combobox赋相同值,某些easyui的版本会导致其中一个无法切换选项. 解决办法,分两步赋值,可解决问题
 - zabbix监控mysql主从同步
			
获取主从复制sql线程和I/O线程状态是否为yes #!/bin/bash HOSTNAME="数据库IP" PORT="端口" USERNAME=" ...
 - Proxmox6.2简单配置
			
刻录: 使用rufus+GPT+DD方式写入U盘 一.更换国内源: 1)删除企业源 mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/so ...
 - windows10:vscode下go语言的适配
			
ps:本篇依赖golang的sdk已经安装完成: url:https://www.cnblogs.com/mrwhite2020/p/16475731.html 一.下载vscode,选择wind ...
 - Solution -「最大权闭合子图」做题随笔
			
T1 小 M 的作物 先从简化题目入手,考虑先去掉 \(c\) 的额外收益.然后尝试将所有作物种在 \(B\), 则目前得到了 \(\sum \limits_{i = 1} ^n b_i\) 的收益. ...
 - 老子云携手福昕鲲鹏,首次实现3D OFD三维版式文档的重大突破
			
你见过能动起来的文档吗? 这可不是动图,也不是视频,而是可以直接自由交互3D模型的3D OFD文档! OFD可能有人不熟悉,它其实是国产"PDF",3D OFD则突破了以往文字.图 ...
 - 一步一步在angular11中添加多语言支持
			
1.新建angular 2.添加@angular/localize ng add @angular/localize 3.设置默认locale_id,在app.module.ts中 import { ...