拉链

scala中的zip拉链大全

柔情痞子 提交于 2020-03-05 00:03:09
美图欣赏: 一.zip拉链 使用zip方法把元组的多个值绑在一起,以便后续处理 scala > val arr = Array ( "Jackson" , "Make" , "Plus" ) arr : Array [ String ] = Array ( Jackson , Make , Plus ) scala > val arr2 = Array ( 1 , 2 , 3 ) arr2 : Array [ Int ] = Array ( 1 , 2 , 3 ) scala > arr zip arr2 res0 : Array [ ( String , Int ) ] = Array ( ( Jackson , 1 ) , ( Make , 2 ) , ( Plus , 3 ) ) scala > val arr3 = Array ( 1 , 2 , 3 , 4 , 5 ) arr3 : Array [ Int ] = Array ( 1 , 2 , 3 , 4 , 5 ) //注意:如果两个数组的元素个数不一致,拉链操作后生成的数组的长度为较小的那个数组的元素个数 scala > arr zip arr3 res1 : Array [ ( String , Int ) ] = Array ( ( Jackson , 1 ) , ( Make , 2 ) , ( Plus ,

哈希拉链法

不羁岁月 提交于 2020-02-18 08:25:07
前言 前面学习到的几种算法比如 红黑树 , 二叉搜索树 ,查找插入 时间复杂度 最快也只能到 O(logn) .现在介绍一种算法可以使查找插入 时间复杂度 达到常数级别。 散列表(Hash table) 也称为 哈希表 。是字典的一种抽象。比如说你要查一个字,通过这个字的拼音首字母,找到这个字的页码,然后翻到那页找就行了。这种方法直接把查找 时间复杂度 降到了常数。但是要牺牲一定的计算索引的时间。计算索引的那个函数称为 哈希函数 ( 散列函数``)。如果两个不同的 key`算出了同一个索引,此时就要用到一定的方法来解决哈希冲突。 哈希函数 哈希函数 一般具有如下特点。 相等的 key 产生相等的 哈希值 计算简单方便 哈希值 均匀分布。(若过度集中,则容易使效率降低到 o(n) ) 构造 哈希函数 有多种方法,这里不详细讲解。 哈希冲突 若两个不相等的 key 产生了相等的 哈希值 ,这时则需要采用 哈希冲突 。 拉链法 Java 标准库的 HashMap 基本上就是用 拉链法 实现的。 拉链法 的实现比较简单,将链表和数组相结合。也就是说创建一个链表数组,数组中每一格就是一个链表。若遇到哈希冲突,则将冲突的值加到链表中即可。 实现步骤 得到一个 key 计算 key 的 hashValue 根据 hashValue 值定位到 data[hashValue] 。( data