首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Immutable(不可变集合

可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要用immutable对象?...所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis) 可以被使用为一个常量,并且期望在未来也是保持不变的 immutable对象可以很自然地用作常量,因为它们天生就是不可变的对于immutable...微软.NET团队已经正式发布了不可变集合,可以通过Nuget添加,包括了下面的不可变集合: System.Collections.Immutable.ImmutableArray System.Collections.Immutable.ImmutableArray...如果该实例已经是不可变的列表,它会简单地转换而不是创建一个新的集合。 • 该 WithLines() 方法遵循 我们的订单公约,如果新的列表和当前列表是相同的就可以避免创建一个新的实例。...这里有两个视频介绍可变集合:  Immutable Collections for .NET Inner workings of immutable collections 不可变集合的系列博客推荐

92660

Java集合【超详细】2 -- Map、可变参数、Collections类

集合应用案例【应用】四、可变参数五、Collections类5.1 Collections常用功能5.2 Comparator比较器六、综合练习练习1:随机点名器练习2:带概率的随机练习3:随机不重复练习...4:集合的嵌套还记得 Java集合框架体系、Collection、List、ArrayList、LinkedList、Set、TreeSet、HashSet 吗?...如果忘记可以到这里重新温习: Java集合【超详细】一、Map集合1.1 Map集合概述和特点【理解】Map集合概述interface Map K:键的类型;V:值的类型Map集合的特点双列集合...static final int MAXIMUM_CAPACITY = 1 << 30; //默认的加载因子,如果构造的时候传则为0.75 static final float DEFAULT_LOAD_FACTOR...2.如果方法中有多个参数,可变参数要放到最后。

10600
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Kotlin】集合操作 ⑤ ( Map 集合 | 获取 Map 值 | Map 遍历 | 可变 Map 集合 )

    文章目录 一、Map 集合 二、获取 Map 值 三、Map 遍历 四、可变 Map 集合 一、Map 集合 ---- 调用 mapOf 函数 创建 Map 集合 , 键值对 元素有两种初始化方式 :...Tom=18, Jerry=12, Jack=20} {Tom=18, Jerry=12, Jack=20} 二、获取 Map 值 ---- 获取 Map 值 : 使用 取值运算符 [] 获取 Map 集合中的值...Pair("Tom", 18), Pair("Jerry", 12), Pair("Jack", 20)) println(map2) // 使用 取值运算符 `[]` 获取 Map 集合中的值...} 执行结果 : {Tom=18, Jerry=12, Jack=20} Tom = 18 Jerry = 12 Jack = 20 Tom = 18 Jerry = 12 Jack = 20 四、可变...Map 集合 ---- 通过调用 mutableMapOf 函数 , 可创建 可变 Map 集合 ; 代码示例 : fun main() { val mutableMap = mutableMapOf

    3.1K40

    Java 可变参数

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java可变参数当做数组处理。注意:可变参数必须位于最后一项。...当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。...因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。...可变参数的特点: (1)只能出现在参数列表的最后;  (2)位于变量类型和变量名之间,前后有无空格都可以; (3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数

    1.6K100

    【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

    通过解构一次性给多个元素赋值 八、Set 集合 九、可变 Set 集合 十、List 与 Set 之间相互转换 十一、数组类型 十二、Map 集合 十三、获取 Map 值 十四、Map 遍历 十五、可变...Map 集合 一、List 创建与元素获取 ---- Kotlin 中的集合分为两类 , 只读集合可变集合 ; 调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以...---- 使用 listOf 函数 创建的 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建的 MutableList 集合可变列表集合 ; 调用 MutableList...#toList 函数 , 可以 将 可变列表集合 转为 只读列表集合 ; 调用 List#toMutableList 函数 , 可以 将 只读列表集合 转为 可变列表集合 ; 代码示例 : fun main...(1)) } 执行结果 : Jerry 九、可变 Set 集合 ---- 调用 mutableSetOf 函数 , 可以创建 可变 Set 集合 ; 可变 Set 集合 , 可以 使用 += 运算符 添加元素

    5.7K20

    Java源码分析:Guava之不可变集合ImmutableMap的源码分析

    在Google Guava官方教程中,Immutable前缀的集合被定义为不可变集合,包括ImmutableSet、 ImmutableMap等,何为不可变集合?...就是指,在集合创建后,集合里所有的状态在生命周期内都不可再修改了,只能读。...那么,什么是可再修改的呢,像Jdk中的map、list等,创建后,还可以再通过put()或者add()反复新增或者修改,这种就是可再修改的集合。既然是不可再修改集合,是不是就一定不能再修改了呢?...也不是,其实,通过反射还是可以被修改的,但这已经不是不可变集合之所以存在的初衷了。 总结一句话是,不可变集合是线程安全的且可当成常量使用的。...这就是ImmutableMap集合可变的真正原因所在。 最后,还有一个问题是,当通过ImmutableMap创建完成一个Map对象后,再试图通过put来插入数据时,会发生什么情况呢?

    65220

    【Kotlin】集合操作 ② ( MutableList 可变列表集合 | 修改 MutableList 集合的 mutator 函数 )

    文章目录 一、MutableList 可变列表集合 二、修改 MutableList 集合的 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素...一、MutableList 可变列表集合 ---- 使用 listOf 函数 创建的 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建的 MutableList 集合...是 可变列表集合 ; 调用 MutableList#toList 函数 , 可以 将 可变列表集合 转为 只读列表集合 ; 调用 List#toMutableList 函数 , 可以 将 只读列表集合...转为 可变列表集合 ; 代码示例 : fun main() { // 创建可变列表集合 var mutableList = mutableListOf("Tom", "Jerry")...转为 只读列表集合 val list: List = mutableList.toList() // 将 只读列表集合 转为 可变列表集合 val mutable

    89730

    .NET不可变集合已经正式发布

    微软基础类库(Base Class Library)团队已经完成了.NET不可变集合的正式版本,但不包括ImmutableArray。与其一起发布的还包括针对其它不可变对象类型的设计指南。...如果你需要在多个线程中安全地共享集合,并且允许每个线程在需要时对其内容进行改变。这种场景就是不可变集合所设计的初衷。...只读集合在使用时需要复制集合中的全部内容,而新的不可变集合可以以一种更高性能的方式从一个现有集合中进行创建。...使用不可变集合需要特别当心,因为你很容易错误地写成“list.Add(item)”,而正确的方法是“list = list.Add(item)”。...甚至编译器也可能产生类似的错误,这也是为什么不可变集合不支持构造函数的原因。

    881100

    Java 可变对象和不可变对象

    Java 可变对象和不可变对象 作者:幽鸿   Mar 14, 2016 10:21:27 PM 一、简单定义            不可变对象(Immutable Objects)即对象一旦被创建它的状态...不可变对象的类即为不可变类(Immutable Class)。Java平台类库中包含许多不可变类,如String、基本类型的包装类、BigInteger和BigDecimal等。...60 61 62 63 64 65 66 67 68 69 70 71 72 73 import java.util.Date...在《Effective Java》一书中, Joshua Bloch提出了一个强制性的建议 :      "类应该是不可变的,除非有很好的理由让它是可变的....如果一个类不能设计为不可变的,也要尽可能的限制它的可变性...Java 类库中的基本数据类型的包装类(如Integer 、 Long 和 Float )都是不可变的,其它数字类型(如 BigInteger 和 BigDecimal )也是不可变的。

    1.9K20

    Java 可变参数 原

    Java1.5增加了新特性: 可变参数:适用于参数个数不确定,类型确定的情况,java可变参数当做数组处理。 注意:可变参数必须位于最后一项。...当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。...因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。...可变参数的特点: (1)、只能出现在参数列表的最后;  (2)、...位于变量类型和变量名之间,前后有无空格都可以; (3)、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数

    67730

    Guava学习笔记(2) --- Guava的不可变集合

    /** * Guava的不可变集合用法 * * 创建对象的不可变集合是一种很好的防御性编程技巧; * Guava为所有JDK标准集合类型和Guava集合类型都提供了简单易用的不可变版本; *...* 1、不可变集合的优点: * (1)当对象被不可信的库调用时,不可变形式是安全的; * (2)不可变对象被多个线程调用时,不存在竞态条件问题; * (3)不可变集合不需要考虑变化,...因此可以节省时间和空间; * (4)不可变对象因为有固定变化,可以作为常量来安全使用; * 2、JDK提供的unmodifiableXXX方法笨重且累赘、不安全、低效; * 3、不可变集合的三种创建方法...-- java.lang.UnsupportedOperationException //test(unmodifiableList); System.out.println(unmodifiableList...); /** * 创建不可变集合 */ ImmutableList immutableList = ImmutableList.copyOf(arrayList

    51220

    Java集合:什么是Java集合

    一、集合的由来 通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。...集合便应运而生了。 二、集合是什么? Java集合类存放在java.util包中,是一个用来存放对象的容器。 注意: 1.集合只能存放对象。...比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。 2.集合存放的都是对象的引用,而非对象本身。...所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。 3.集合可以存放不同类型,不限数量的数据类型。...三、Java集合框架 首先,我们来看一张图 发现一个特点,上述所有的集合类,除了map系列的集合,即左边的集合都实现了Iterator接口。

    1.3K20

    Java集合:Set集合

    一、Set接口的特点 一个包含重复元素的collection。更确切地讲,Set包含满足e1.equals(e2)的元素对 e1和e2,并且最多包含一个null元素。...但是TreeSet集合的存储是有序的,即:存储到集合中的元素是按自然顺序存储的。 判断元素唯一性的方式: 根据比较方法的返回值来判断。是0(零)就存入集合,不是0就不存。...因为Set集合是不能有重复的元素,无序。...Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。...也就是说,当遍历LinkedHashSet集合里元素时,HashSet将会按元素的添加顺序来访问集合里的元素。

    1.6K20

    【Kotlin】集合操作 ④ ( Set 集合 | 可变 Set 集合 | List 与 Set 之间相互转换 | 数组类型 )

    文章目录 一、Set 集合 二、可变 Set 集合 三、List 与 Set 之间相互转换 四、数组类型 一、Set 集合 ---- List 集合中的元素是 可以重复 的 , Set 集合中的元素...不可重复 ; 调用 setOf 函数 , 可以创建 Set 集合 ; 调用 Set#elementAt 函数 , 可以 读取 Set 集合中的元素 ; 代码示例 : fun main() { val...set = setOf("Tom", "Jerry", "Jack") println(set.elementAt(1)) } 执行结果 : Jerry 二、可变 Set 集合 ---- 调用...mutableSetOf 函数 , 可以创建 可变 Set 集合 ; 可变 Set 集合 , 可以 使用 += 运算符 添加元素 , 使用 -= 运算符删除元素 ; 代码示例 : fun main()...Set 集合 , 转换过程中会 自动删除重复的元素 ; 调用 List#distinct() 函数 , 可以去除重复元素 ; 调用 Set#toList() 函数 , 可以将 Set 集合转为 List

    57820

    Java集合:List集合

    List集合 List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。...List集合里添加了一些根据索引来操作集合元素的方法 一、ArrayList ArrayList是List接口的典型实现类,本质上,ArrayList是对象引用的一个变长数组。...ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括null在内的所有元素。除了实现List接口外,此类还提供了一些方法来操作内部用来存储列表的数组的大小。...java.util.vector提供了向量类(Vector)以实现类似动态数组的功能。...java.util包中的其他类中也都有这类方法,以便于用户获取对应的枚举类型。 在Enumeration中封装了有关枚举数据集合的方法。

    1.7K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券