Tree Map

package tree

object Map {

  def map[A, B](t: Tree[A])(f: A => B): Tree[B] = t match {
    case Leaf(a)      => Leaf(f(a))
    case Branch(l, r) => Branch(map(l)(f), map(r)(f))
  }

  def main(args: Array[String]): Unit = {
    val tree = Branch(Leaf(1), Branch(Branch(Branch(Leaf(3), Branch(Leaf(5), Leaf(6))), Leaf(4)), Leaf(2)))
    println(map(tree)(_ * 2))
  }

}
Branch(Leaf(2),Branch(Branch(Branch(Leaf(6),Branch(Leaf(10),Leaf(12))),Leaf(8)),Leaf(4)))
时间: 2024-08-03 22:58:15

Tree Map的相关文章

java collection 集合源码分析(三) map

TreeMap 首先看下TreeMap的头部声明的两个变量,TreeMap的排序利用红黑树进行     /**      * The comparator used to maintain order in this tree map, or      * null if it uses the natural ordering of its keys.      *      * @serial      */     private final Comparator<? super K> 

Java容器Map接口

Map接口容器存放的是key-value对,由于Map是按key索引的,因此 key 是不可重复的,但 value 允许重复. 下面简单介绍一下Map接口的实现,包括HashMap,LinkedHashMap,WeakHashMap,Hashtable,IdentityHashMap和TreeMap.需要注意的是,Map接口并没有继承Collection接口! 1.HashMap HashMap 继承于AbstractMap,实现了Cloneable.java.io.Serializable接口

java中的Map接口

前言 在学习Map接口之前,先来看看散列表的概念:本节主要讲讲Map接口的实现类和集合的工具类. 这里先提一下泛型编程:通常情况下用来限制集合的存储的数据类型.在定义集合时使用<引用类型>来限制集合.其中<>的类型只为引用类型. 正文 散列桶 1.散列桶的概念 散列桶的目的是使用空间换时间,即它是使用索引来提高效率. 散列桶把一组数据通过散列算法,将数据分散开来:存储于连续的内存空间中(数组),将散列值作为数组的下标:如果散列值有重复的,将重复的数据放置在散列桶中.散列桶是线性表.

[转]iView Cascader、Tree 数据处理

原文地址:https://www.jianshu.com/p/1daf7d762502 iView 有个 Cascader.Tree 组件,数据要求比较严格(简直弱爆了好吗...) 问题简述 Cascader 数据要求一览(Tree 其实类似):{    value: 'jiangsu',    label: '江苏',    children: [        {            value: 'nanjing',            label: '南京',           

HashMap与TreeMap源码分析

1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu

简单将vim改造成IDE

公司服务器上的vim用的异常痛苦,自己写几个小脚本又不想用IDE,于是简单改造下vim,尝试了一次以后发现公司的机器装的是vim6x,很多插件不支持,于是干脆重装成7.x 1.安装vim 先去下载vim安装包,然后解压,执行安装命令,一般有 ./configure --prefix=/usr/local/ 安装目录 --enable-perlinterp perl集成 --enable-pythoninter ppython集成 --enable-cscope csope支持 --enable-

网页绘制图表 Google Charts with JavaScript #1....好强、好简单啊!

此为文章备份,原文出处(我的网站) 网页绘制图表 Google Charts with JavaScript....好强.好简单啊!#1 http://www.dotblogs.com.tw/mis2000lab/archive/2014/01/23/google_charts-javascript.aspx 今天看见 g+一篇文章 http://inspiredtoeducate.net/inspiredtoeducate/?p=1319 因而发觉这个东西. 我先连到 Google原厂网站,看

java数据结构

1.计算机科技的两大支柱 1.数据结构 2.算法 程序=数据结构+算法 2.定义:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科 3.数据(Data):是对信息的一种符号表示.在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称. 数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理. 一个数据元素可由若干个数据项组成.数据项是数据的不可分割的最小单位. 数据结构(Data Structure

Java-TreeMap源码分析及示例

纸上得来终觉浅,绝知此事要躬行  --陆游    问渠那得清如许,为有源头活水来  --朱熹 TreeMap与Map的关系如下图: TreeMap介绍: (1)TreeMap是一个有序的key-value集合,是通过红黑树来实现的. (2)TreeMap是继承于AbstractMap,所以他是一个Map,是一个key-value集合. (3)TreeMap实现了Navigable接口,支持一系列的导航方法,TreeMap是有序集合 (4)实现了Cloneable接口,可以被克隆 (5)TreeM