TreeMap与TreeSet(初步了解)

TreeMap原理实现及常用方法 目录 一. TreeMap概述 二. 红黑树回顾 三. TreeMap构造 四. put方法 五. get 方法 六. remove方法 七. 遍历 八. 总结 前面我们分别讲了Map接口的两个实现类HashMap和LinkedHashMap,本章我们讲一下Map接口另一个重要的实现类TreeMap,TreeMap或许不如HashMap那么常用,但存在即合理,它也有自己的应用场景,TreeMap可以实现元素的自动排序。 一. TreeMap概述 TreeMap存储K-V键值对,通过. 阅读详情

日升时奋斗,日落时自省 

目录

一、Map和Set

1、搜索树的基本概念

 2、二叉搜索查找

3、二叉搜索树插入

4、二叉搜索树删除

 二、TreeMap

 三、TreeSet

一、Map和Set

Map/Set 及实际实现类 HashMap/TreeMap/HashSet/TreeSet 的使用,本次复习TreeMap和TreeSet

Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关:

1.直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢
2. 二分查找,时间复杂度为O(log_{2}n ),但搜索前必须要求序列是有序的
放入现实中都很难遇到巧合的情况,集合就更针对实现的复杂情况,动态查找集合便是更优的选择Map和Set就是动态查找容器

TreeMap是一个搜索树,但是不仅仅是一颗搜索树,因为单单的搜索树是不能实现很多情况为最优

搜索树相对于TreeMap其他底层代码更简单,初步入手

1、搜索树的基本概念

二叉搜索树也叫二叉排序树,基本性质:
左子树所有节点的值都小于根节点的值;

右子树所有节点的值都大于根节点的值;

它的左右子树都遵循前面的条件,分别也会构成二叉搜索树,这一整棵树才算是二叉搜索树

用一个数据举例:5  3  4  1  7  8  2  6  0  9

 2、二叉搜索查找

二叉搜索树的查找有点类似于二分法查找,每次找的数据都会与当前根的值进行比较,大于根节点的就向根的右边进行查找,小于根节点的就向左边进行查找

借上面的图

思路解析:

(1)一颗搜索树不为空情况下

(2)节点值==key,return true;

(3)节点值>key,向左子树找

(4)节点值<key,向右子树找

(5)key在二叉搜索树中不存在,return false

 图解:

(1)空树

 (2)非空书

static  class  NodeTree{
        public int val;
        public NodeTree left;
        public NodeTree right;

        public NodeTree(int val){
            this.val=val;
        }
    }
    public static NodeTree root=null;
public boolean search(int key){
        NodeTree cur=root;
        while(cur!=null){   //树不为空
            if(cur.val>key) {    //节点值>key,向左子树找
                cur=cur.left;
            }else if(cur.val<key){   //节点值<key,向右子树找
                cur=cur.right;
            }else{
                return true;    //节点值==key,return true;
            }
        }
        return false;  //没有找到情况
    }

3、二叉搜索树插入

开始已经知道二叉树是什么了,插入其实就比较简单了

思路:

(1)树为空的情况,直接插入  (树为空)

(2)比根节点小,向左子树走 (树不为空)

(3)比根节点大,向右子树走

(4)如果找到一样的值了,就返回false

(5)直到走到空,就可以插入了

注:找到空了,怎么插入呢,这里就需要一个知道他的父节点,所以这里要记录一个父节点

(1)空树 

 (2)非空树

代码解析:

public  boolean insert(int key){   //二叉搜索树进行插入
        if(root==null){
            root=new NodeTree(key);   //如果为空的话就只插入
            return true;
        }
        NodeTree cur=root;
        NodeTree parent=null;          //这里记录一下父节点,为了后面找到插入位置,进行连接
        while(cur!=null){               //树不为空,一直找
            if(cur.val>key){          //跟节点值小的,
                parent=cur;           //记录当前父节点
                cur=cur.left;          //找右子树
            }else if(cur.val<key){     //根节点值大的,
                parent=cur;            //记录当前父节点
                cur=cur.right;         //找左子树
            }else{                 //搜索树中不存在相同的值,如果相同的话就返回false
                return false;
            }
        }
        NodeTree node=new NodeTree(key);   //找到插入位置了建立新节点
        if(key> parent.val){           //比父亲节点小,左边插入
            parent.right=node;
        }else{                         //比父亲节点大,右边插入
            parent.left=node;                
        }
        return true;
    }

4、二叉搜索树删除

删除的步骤就相对较多了

思路: 分析以下情况   (设置待删除节点为cur,当前父节点为parent)

(1)cur.left==null

(2)cur.right==null

(3)cur.left!=null&&cur.right!=null

以上三种情况,我们通过图解来详细解释

用替换法将待删除的值替换,并且保证整个二叉搜索树不会动摇

图解:

特殊情况:

 

 代码解析:

代码是与图是相反的可以看着图来推当前代码

public void removeNode(NodeTree parent,NodeTree cur){
        if(cur.left==null){   //为了找到待删除的值
            if(cur==root){
                root=cur.right;
            }else if(cur==parent.left){
                parent.left=cur.right;
            }else if(cur==parent.right){
                parent.right=cur.right;
            }
        }else if(cur.right==null){
            if(cur==root){
                root=cur.left;
            }else if(cur==parent.left){
                parent.left=cur.left;
            }else  if(cur==parent.right){
                parent.right=cur.left;
            }
        }else{   //这里我们取一种就可以了
            NodeTree target=cur.right;
            NodeTree targetparent=cur;
            while(target.left!=null) {   //为了找替换值
                targetparent=target;
                target=target.left;
            }
            cur.val=target.val;
            if(target==targetparent.left){  //分两种情况
                targetparent.left=target.right;
            }else{
                targetparent.right=target.right;
            }
        }
    }

 二、TreeMap

里面是一个集合 ,TreeMap的底层代码是一个Map集合接口

Map底层结构TreeMap
底层结构红黑树
插入/删除/查找时间
复杂度
O(1)
是否有序关于Key有序
线程安全不安全
插入/删除/查找区别需要进行元素比较
比较与覆写key必须能够比较,否则会抛出
ClassCastException异常
应用场景需要Key有序场景下

 泛型有两个第一个传入key,第二个传入value

这里的key是可以比较的key值,传key时调用了比较器,如果不是可以比较的,就会报错

 put方法就是将我们需要的key,value值放入存储起来

getOrDefault方法是key是否找到,如果没有就返回默认值

除了上面的方法,还有以下比较基本的方法使用,可以尝试 

方法解释
V get(Object key)返回 key 对应的 value
V getOrDefault(Object key, V defaultValue)返回 key 对应的 value,key 不存在,返回默认值
V put(K key, V value)设置 key 对应的 value
V remove(Object key)删除 key 对应的映射关系
Set<K> keySet()返回所有 key 的不重复集合
Collection<V> values()返回所有 value 的可重复集合
Set<Map.Entry<K, V>> entrySet()返回所有的 key-value 映射关系
boolean containsKey(Object key)判断是否包含 key
boolean containsValue(Object value)判断是否包含 value

 前面的图TreeMap用Set棘手后打印

那Map的打印应怎么处理呢

这里肯定不能用foreach,迭代打印因为都没有继承关系

代码解释:

public static void main(String[] args) {
        Map<String,Integer> map=new TreeMap<>();
        map.put("hello",2);
        map.put("abc",1);
        Set<Map.Entry<String,Integer>> entries=map.entrySet();
        for (Map.Entry<String,Integer> set:entries) {
            System.out.println(set.getKey()+" "+set.getValue());
        }
    }

图解一下:

 三、TreeSet

TreeSet的底层是TreeMap,去掉重复的元素,key的重复不会再搜索树中出现

TreeSet继承了Set,Set又继承了Collection

注:将Map与Set联系起来Set<Map.Entry<String,Integer>> entries=map.entrySet();

才能使用Iterable中迭代打印,foreach打印等方法,Map一系中是独立出来并没有实现在下面的关系图中,TreeSet弥补了当前的缺陷。

 TreeSet的底层是TreeMap,直接将TreeMap与上面的关系图联系起来,TreeSet也同样有TreeMap的限制,泛型传值中是需要经过比较。(用于Map相同的方法)

 Set<Map.Entry<String,Integer>> entries=map.entrySet();

解释:

【JAVA】TreeMap 详解 TreeMap 详解 阅读详情

相关推荐

TreeMap详解:Java 有序 Map 原理与实现

在Java中,Map是一种常见的数据结构,它可以用来存储键值对。TreeMap是Java中的一个特殊的Map实现,它是基于红黑树实现的,具有排序和查找的功能。在本文中,我们将详细介绍TreeMap的使用和原理。本文主要介绍了Java中的TreeMap数据结构,包括其源代码解析、应用场景案例、优缺点分析、类代码方法介绍、测试用例和全文小结。通过对TreeMap的学习,读者可以了解到TreeMap的特点和使用方法,以及它与其他Map实现的不同之处。TreeMap是Java中的一个SortedMap。

喵手的博客 4461

一文带你全面深入了解TreeMap

TreeMap是Map家族中的一员,也是用来存放key-value键值对的。平时在工作中使用的可能并不多,它最大的特点是遍历时是有顺序的,根据key的排序规则来,那么它具体是如何使用,又是怎么实现的呢?本文基于jdk8做一个讲解。TreeMap是一个基于key有序的key value散列表。map根据其键的自然顺序排序,或者根据map创建时提供的Comparator排序不是线程安全的key 不可以存入null底层是基于红黑树实现的。

weixin_49307478的博客 3万+

⭐️白嫖的阿里云认证⭐️ 【真题&参考答案】:大模型Clouder认证:利用大模型提升内容生产能力

【摘要】真题「大模型Clouder认证:利用大模型提升内容生产能力」

davidkorhenn的博客 1928

Java基础知识之TreeMap

超级详细的Java之TreeMap知识点!!!

qq_45344586的博客 1万+

均匀直线阵的常规波束形成matlab

常规波束形成概述 波束形成是将基阵各阵元输出进行一定的处理,从而形成基阵空间指向性的技术。一个波束形成器可以对空间某方位的信号有响应,而抑制其他方位的信号,所以又被称为空域滤波。一般分为常规波束形成(CBF)和自适应波束形成(ABF)。 常规波束形成较为基础,一般又可以根据实现的途径不同,分为时延波束形成和频移波束形成。 时延波束形成 在各阵元间添加时延使波束控制于不同方位的方法成为时延波束形成。设定一个目标方向,当信号来源方向在该目标方向时,响应最大;信号来源于其他方向时,响应较小。将这种响应大小

Xujing1143的博客 2万+

Appsflyer S2S事件上报实战:从参数获取到避坑指南(附Firebase对比)

本文详细解析了Appsflyer S2S事件上报的实战技巧,包括核心参数获取、测试环境搭建、生产环境最佳实践以及高级场景处理。通过对比Firebase的事件上报机制,帮助开发者高效避坑并优化数据上报流程,提升应用分析与营销效果。

egg99的博客 885

【Java 数据结构】TreeMap和TreeSet的介绍

本期主要讲解: 1、认识 TreeMap 和 TreeSet 2、TreeMap 的主要成员变量 3、TreeMap 的主要构造方法 4、TreeMap 和 TreeSet 的元素必须可比较 5、TreeMap 和 TreeSet 关于 key 有序 6、TreeMap 和 TreeSet 的关系

程序猿教你打篮球的博客 1万+

CST微波工作室端口设置保姆级教程:从波导端口到离散端口,手把手教你搞定S参数仿真

本文提供CST微波工作室端口设置的详细教程,涵盖波导端口和离散端口的选择与配置,助力工程师精准完成S参数仿真。通过微带线滤波器案例,详解端口尺寸、阻抗设置及常见问题排查,提升仿真效率与准确性。

weixin_42570296的博客 362

TreeMap和TreeSet

Set是继承自Collection的一个接口类Set中只存储了key,并且要求key一定要唯一TreeSet的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的Map中存放键值对的Key是唯一的,value是可以重复的TreeMap和TreeSet的底层数据结构是红黑树,所以插入的元素都必须是能够比较大小的。

2302_79249715的博客 1335

python数据处理(一)——如何用python实现excel功能

python如何实现excel的数据提取、指标构建,进行透视分析。

一名数据分析师 2705

信息安全与技术——(十一)恶意代码检测与防范技术

恶意代码(Malicious Code )或恶意软件(Malware )主要是指以危害信息的安全等不良意图为目的的程序,它们一般潜伏在受害计算机系统中实施破坏或窃取信息。

m0_63853448的博客 5991

TreeMap 与 TreeSet

本文介绍了Java中TreeMap和TreeSet的核心特性与应用场景。它们基于红黑树实现,具有有序、高效的特点,适用于需要动态查找且保持键有序的场景。TreeMap存储键值对,Key有序且唯一;TreeSet仅存储Key,实现去重和排序。二者操作时间复杂度均为O(logN)。与HashMap/HashSet相比,Tree系列适合需要有序性的场景,而Hash系列更注重性能。使用时需注意自定义Key需实现比较逻辑、Key不可修改等要点。掌握它们的特性和适用场景,能更好地处理有序数据的存储和查询需求。

THGML的博客 893

Bert+CNN文本分类(含代码实现)

一、什么是CNN? CNN的特点: (1)特定特征位移不变性 (2)特征缩放不变性 2. CNN模型构造过程 2.1 Convolution(卷积) (1)获取关键特征(减少参数) (2)共享权重(再次减少参数) 2.2 Max Pooling(池化) 2.3 Flatten 向量转换为如图所示可以进入全连接层的向量模式 3. TextCNN 上图可理解为: 通过不同的size(如上图2、3、4等),上图红色代表 size=2,黄色...

Python,数据分析,机器学习,深度学习 1万+

Treemap和TreeSet

Treemap 和 Treeset 的插入、删除和查找操作的时间复杂度均为 O(log n)。在频繁插入和删除场景下可能不如 HashMap 和 HashSet 高效。Treemap 适用于需要按键排序的场景,例如存储学生成绩并按学号排序;Treeset 适用于需要有序且唯一的元素集合,例如去重并排序一组数据。Treemap 和 Treeset 是 Java 中高效的有序集合实现,基于红黑树保证了元素的有序性和操作的高效性。

wxy963的博客 849

060、模型蒸馏:把扩散模型压进单步的魔法

《端侧文生图模型蒸馏实战:从32步到1步的优化之道》摘要:针对边缘设备部署难题,本文分享了扩散模型蒸馏的核心经验。通过重构损失函数(感知损失+对抗训练+KL散度)、优化采样轨迹截取策略和改造学生模型架构,成功将Stable Diffusion压缩至单步推理。关键发现包括:小批量训练更有效、标签平滑保障生成多样性、双模型策略平衡质量与速度。在Cortex-A53芯片上实现300ms内生成,内存占用控制在200MB以下。特别强调工业部署需权衡压缩率与稳定性,建议保留迭代模式开关以适配不同场景需求。

2601_95651806的博客 150

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TreeMap及TreeSet总结

简述Map和Set

qq_62274623的博客 599

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【TreeMap和TreeSet】

TreeSet的底层使用TreeMap实现的,按照元素的自然顺序对元素进行排序,或者利用传入的ComParator对象进行排序,具体取决于实例化的时候调用什么构造方法。

deng1204的博客 940

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java TreeSet 和 TreeMap 源码解读

java 集合篇章——TreeSet 和 TreeMap 源码解读。

优快云 / 稀土掘金/ B站 / GitHub: Cyan_RA9 2124

TreeSet and TreeMap

转载自https://github.com/CarpenterLee/JCFInternals/blob/master/markdown/5-TreeSet%20and%20TreeMap.md#treeset-and-treemap,感谢整理分享 总体介绍 之所以把TreeSet和TreeMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说Tree...

黎明前的准备 3807

TreeMap及TreeSet详解

5. 实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在HashSet的基础。有这张图我们可以看出Set是继承Collection而Map没有继承任何的类,了解这一点对于后续的学习 是比较有帮助的。3. TreeSet的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的。6. Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入。上维护了一个双向链表来记录元素的插入次序。

westdjjdjdk的博客 1107

TreeSet和TreeMap的区别与联系

TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常用实现类。虽然TreeMap和TreeSet实现的接口规范不同,但 TreeSet 底层是通过 TreeMap 来实现的(如同HashSet底层是是通过HashMap来实现的一样),因此二者的实...

AlbenXie的博客 4344

【Java笔记】 TreeMap 和 TreeSet

带你了解 TreeMap 和 TreeSet !!!

Origin_life的博客 1435

【数据结构】TreeMap和TreeSet

本期主要讲解:1、TreeMap 1.1 TreeMap 的简介 1.2 TreeMap 的基本使用 2、TreeSet 2.1 TreeSet 的简介 2.2 TreeSet 的基本操作

拼命阿紫冲冲冲! 1467
上一篇: 优先级队列(堆)
下一篇: HashMap与HashSet
学习自省
博客等级 码龄5年 284粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值