immutable

Scala序列List

馋奶兔 提交于 2020-01-25 08:10:19
Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable。 在 Scala 中集合有可变(mutable)和不可变(immutable)两种类型, immutable 类型的集合初始化后就不能改变了(注意与 val 修饰的变量进行区别)。 目录 不可变序列 1. 构建List 2. 插入 3. 追加 4. 合并 序列常用操作 可变序列 1. 构建可变列表 2. 追加 3. 合并 不可变序列 导包 import scala.collection.immutable._ 在 Scala 中列表要么为空(Nil 表示空列表)要么是一个 head 元素加上一个 tail 列表。 9 :: List(5, 2) :: 操作符是将给定的头和尾创建一个新的列表。 注意: :: 操作符是右结合的,如 9 :: 5 :: 2 :: Nil 相当于 9 :: (5 :: (2 :: Nil))。 1. 构建List序列 // 构建不可变的序列 val lst = List(1,2,3) // List(1, 2, 3) 2. 插入 //将 0 插入到 lst 的前面生成一个新的 List,几种方式 val lst2 = 0 :: lst val lst3 = lst.::(0) val lst4 = 0 +: lst val lst5 = lst.+:

guava学习--集合2&Range

梦想与她 提交于 2020-01-22 19:17:26
转载:http://www.cnblogs.com/peida/p/Guava_ImmutableCollections.html Table: 当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现。为此Guava提供了一个新的集合类型-Table集合类型,来支持这种数据结构的使用场景。Table支持“row”和“column”,而且提供多种视图。 Table<String, Integer, String> aTable = HashBasedTable.create(); for ( char a = 'A'; a <= 'C'; ++ a) { for (Integer b = 1; b <= 3; ++ b) { aTable.put(Character.toString( a), b, String.format( "%c%d", a, b)); } } System. out.println( aTable.column(2)); System. out.println( aTable.row( "B")); System. out.println( aTable.get( "B", 2)); System. out.println( aTable.contains( "D"

combineReducers的使用

故事扮演 提交于 2020-01-20 04:17:47
作用: 将各个小的reducer整合成一个大的reducer; 方法: combineReducers ( { header : headerReducer , body : bodyReducer } ) ; 注意点: 使用时, 普通对象从redux中引入combinReducers, immutable对象从redux-immutable中引入, 如下: 1, 普通对象: import { combinReducers } from 'redux'; 2, immutable对象: import { combinReducers } from 'redux-immutable'; 来源: CSDN 作者: jiuyehengxia 链接: https://blog.csdn.net/jiuyehengxia/article/details/104044272

Guava学习笔记:Immutable(不可变)集合

纵然是瞬间 提交于 2020-01-18 09:25:51
  不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。   为什么要用immutable对象?immutable对象有以下的优点:     1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象     2.线程安全的:immutable对象在多线程下安全,没有竞态条件     3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)     4.可以被使用为一个常量,并且期望在未来也是保持不变的   immutable对象可以很自然地用作常量,因为它们天生就是不可变的对于immutable对象的运用来说,它是一个很好的防御编程(defensive programming)的技术实践。    JDK中实现immutable集合   在JDK中提供了Collections.unmodifiableXXX系列方法来实现不可变集合, 但是存在一些问题,下面我们先看一个具体实例: import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.junit.Test;

final 实例域

扶醉桌前 提交于 2020-01-12 00:03:34
可以将实例域定义为 fina。l 构建对象时必须初始化这样的域 必须确保在每 一个构造器执行之后, 这个域的值被设置, 并且在后面的操作中, 不能够再对它进行修改 因为在对象构建之后,这个值不会再 被修改, 即没有 setName 方法。 class Employee { private final String name; } final 修饰符大都应用于基本(primitive) 类型域 不可变(immutable) 类的域(如果类 中的每个方法都不会改变其对象 , 这种类就是不可变的类。 例如, String 类就是一个不可变 的类 )。 对于可变的类, 使用 final 修饰符可能会对读者造成混乱。 例如, private final StringBuiIcier evaluations; 关键字只是表示存储在 evaluations 变量中的对象引用不会再指示其他 StringBuilder 对象。 不过这个对象可以更改: 来源: CSDN 作者: 我是一个小白菜 链接: https://blog.csdn.net/zyl_yjy_yi/article/details/103915258

不难懂--------react笔记

試著忘記壹切 提交于 2020-01-08 05:28:51
在jsx中不能使用class定义类名 因为class在js中是用来定义类的 定义类名的时候用className label中的for必须写成htmlFor ReactDOM.render: 参数1:需要渲染的dom元素或者组件 参数2:需要将渲染好的元素挂载在哪个挂载点身上 参数3:回调 成功的回调 React中如何创建一个组件 通过class类的方式来创建一个组件 class 组件名称 extends React.Component 注意:这个组件中必须要写一个render函数 函数中必须返回一个jsx语法 插槽作用: 插槽即:ReactDOM.createPortal(child, container) ,由ReactDom提供的接口。 可以实现将子节点渲染到父组件DOM层次结构之外的DOM节点。 第一个参数(child)是任何可渲染的 React 子元素,例如一个元素,字符串或 片段(fragment)。第二个参数(container)则是一个 DOM 元素。 应用场景: 对于 portal 的一个典型用例是当父组件有 overflow: hidden 或 z-index 样式,但你需要子组件能够在视觉上 “跳出(break out)” 其容器。例如,对话框、hovercards以及提示框。所以一般react组件里的模态框,就是这样实现的~ React.Component:

[转]为什么Java中的String不可变

淺唱寂寞╮ 提交于 2019-12-30 11:05:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 笔主前言 : 众所周知,String是Java的JDK中最重要的基础类之一,在笔主心中的地位已经等同于int、boolean等基础数据类型,是超越了一般Object引用类型的高端大气上档次的存在。 但是稍有研究的人就会发现,String对象是不可修改的,源代码中的String类被定义为final,即为终态,不可继承,String也不提供任何直接修改对象内部值的方法,每次使用replace、substring、trim等方法,或是使用字符串连接符+时,都是返回一个全新的String对象,整个String对象的值只能通过构造函数,在初始化对象实例时一次性输入(当然Java语法允许直接使用双引号方式快捷获取String对象实例)。 如果需要动态修改、构造字符串,则需要通过StringBuilder或StringBuffer对象进行操作,并在最终输出时通过toString()、substring()等方法得到String对象。直接使用String对象进行连接、增删替换字符等操作,将不可避免地产生大量临时String对象,影响CPU效率和增加资源回收负担。 今天偶然看到一个外文文章,较为完整详细客观科学的论述了String类被如此设计成不可变结构的原因,下面笔主结合自己的理解,尽量通过浅显的语言意译成中文,科普一下知识。

facebook immutable.js

為{幸葍}努か 提交于 2019-12-20 11:54:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是Immutable Data Immutable Data是指一旦被创造后,就不可以被改变的数据。 通过使用Immutable Data,可以让我们更容易的去处理缓存、回退、数据变化检测等问题,简化我们的开发。 js中的Immutable Data 在javascript中我们可以通过deep clone来模拟Immutable Data,就是每次对数据进行操作,新对数据进行deep clone出一个新数据。 deep clone /** * learning-immutable - clone-deep.js * Created by mds on 15/6/6. */ 'use strict'; var cloneDeep = require('lodash.clonedeep'); var data = { id: 'data', author: { name: 'mdemo', github: 'https://github.com/demohi' } }; var data1 = cloneDeep(data); console.log('equal:', data1===data); //false data1.id = 'data1'; data1.author.name = 'demohi

react细节

北城以北 提交于 2019-12-06 13:54:19
1.在函数式组件中使用 类型和默认值 function App({ name }) { return ( <div> <h1>{name}</h1> </div> ) } App.prototype = { name: types.string.isRequired func / number / symbol / object } App.defaultProps = { name: "wanglei1234" } 当父组件的 render 函数被运行时 , 它 的子组件 render 函数也会 被 重新执行 虚拟 DOM 的好处 1.性能 提升了 2.它 使得跨端应用 得以 实现 ( 虚拟 DOM 不生成真实 DOM , 而 生成 原生的应用的组件 ) Diff 算法 比对 虚拟 DOM(js对象) 同级 比对 + key 值比对 一致 : 继续 比较第二层 不一致 :不再进行下一步比较 好处是比对 算法非常简单 为什么setState 要设计成异步函数 多次 短时间的操作合并成一次操作 减少比对虚拟 DOM 的次数 循环的时候 key 的意义 比对 和 key 值做关联 为什么key 值不要设置为 index 因为 插入数组的时候, div 的 index 可能变成其他 div 的 index 导致 key值 不稳定, 就 失去了存在的意义 Redux 设计 和 使用的三项

常用的英文词汇

筅森魡賤 提交于 2019-12-04 19:16:38
  自己总结一些常用的英文吧,以前也没有去总结,慢慢的总结,这样才能在技术这条路上越走越远,刚开始总结的肯定不多,这些单词就是象征的自己能走多远,加油!!! variable       变量              lexical scoping      词法作用域 primitive type    原始类型            global variable       全局变量 object type     对象类型            function scope      函数作用域 property       属性              numerical literal      数字直接量 constructor     构造函数            overflow         溢出 garbage collection  垃圾回收机制          underflow        下溢 mutable       可变              infinity           无穷大 immutable      不可变             escape sequence    转义字符 untyped      无类型              RegExp()         构造函数 declare      声明