`

不可变集合immutable

阅读更多

   每个Guava immutable集合类的实现都拒绝null值。我们做过对Google内部代码的全面的调查,并且发现只有5%的情况下集合类允许null值,而95%的情况下都拒绝null值。万一你真的需要能接受null值的集合类,你可以考虑用Collections.unmodifiableXXX。

  Immutable集合使用方法:
  一个immutable集合可以有以下几种方式来创建:
  1.用copyOf方法, 譬如, ImmutableSet.copyOf(set)
  2.使用of方法,譬如,ImmutableSet.of("a", "b", "c")或者ImmutableMap.of("a", 1, "b", 2)
  3.使用Builder类

 
import java.awt.Color;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
 
 
 
 
/**
 * 不可变集合
 *
 * @author Administrator 2009-11-4 23:30:44
 */
public class Test {
 public static void main(String[] args) {
  //不可变list
  ImmutableList<String> list = ImmutableList.of("1","2","3","7","6","5");
  System.out.println("【ImmutableList】:"+list);
  ImmutableSortedSet<String> listSort = ImmutableSortedSet.copyOf(list);
  System.out.println("【ImmutableSortedSet】:"+listSort);
   
  //不可变Map
  ImmutableMap<String, Integer> imap = ImmutableMap.of
    ("1", 1,"2", 2,"3", 4);
  System.out.println("【ImmutableMap】:"+imap);
 
  ImmutableSet<String> iset = ImmutableSet.of("a","b","c");
  System.out.println("【ImmutableSet】:"+iset);
 
  ImmutableSet<Color> imColorSet =
                ImmutableSet.<Color>builder()
                    .add(new Color(0, 255, 255))
                    .add(new Color(0, 191, 255))
                    .build();
         
          System.out.println("【imColorSet】:"+imColorSet);
 
  //可变map变不可变map
  ImmutableMap.Builder<String, Color> ibmap = new ImmutableMap.Builder<String, Color>();
  for(int i=0;i<3;i++){
   ibmap.put(""+i+"", new Color(0,111,123));
  }
  ImmutableMap<String,Color> imaps = ibmap.build();
  System.out.println("【ImmutableMap】:"+imaps);
   
  //Lists帮助类创建list集合
  List<String> list_1 = Lists.newArrayList("4","5","6");
  System.out.println("【Lists】:"+list_1);
 
  //Maps帮助类创建map集合
  Map<String,Integer> map = Maps.newHashMap();
  map.put("1", 1);
  map.put("2", 2);
  System.out.println("【Maps】:"+map);
 
  //Sets帮助类创建set集合
  Set<String> set = Sets.newHashSet();
  set.add("1");
  set.add("1");
  set.add("2");
  set.add("3");
  System.out.println("【Sets】:"+set);
 
 }
}
 
分享到:
评论

相关推荐

    不可变数据集合Immutable.js.zip

    Immutable 是 Facebook 开发的不可变数据集合。不可变数据一旦创建就不能被修改,是的应用开发更简单,允许使用函数式编程技术,比如惰性评估。Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map...

    kotlinx.collections.immutable,Kotlin的不可变集合原型.zip

    在Kotlin编程语言中,`kotlinx.collections.immutable`是一个重要的库,它提供了不可变集合的实现。不可变集合是一旦创建后就不能修改的集合,这种数据结构在多线程环境、函数式编程和构建安全的数据模型时非常有用...

    Node.js-immutable-Javascript不可变的持久化数据集合

    `immutable.js`库为Node.js开发带来了不可变数据集合的便利,通过引入不可变性和持久化数据,提高了代码的稳定性和性能。结合函数式编程的理念,它为处理复杂状态和并发场景提供了一种强大而优雅的解决方案。在实际...

    kotlinx.collections.immutable, Kotlin的不可变集合 Prototype.zip

    kotlinx.collections.immutable, Kotlin的不可变集合 Prototype Kotlin的不可变集合库 Kotlin的不可变集合接口和实现 Prototype 。有关详细信息,请参阅建议列表。Prototype实现基于 pcollections ( 版权 2015的作者...

    immutable-conv:序列化和解析不可变集合

    序列化和恢复不可变集合。 快速开始 import conv from 'immutable-conv' import { is , List , Map } from 'immutable' let lst = List ( [ 3 , 14 , 15 ] ) , serialized = conv . serialize ( lst ) serialized...

    不可变对象ImmutableXXX:Collection、List、Set、Map…

    `ImmutableCollection`是所有不可变集合的父接口,它提供了基础的不可变集合操作。`ImmutableList`、`ImmutableSet`和`ImmutableMap`则分别代表了不可变的列表、集合和映射,它们继承自`ImmutableCollection`,并...

    guava不可修改集合

    首先,标题中提到的“guava不可修改集合”指的是Guava库中的一类集合,它们被设计为不可变。在计算机科学中,“Immutable(不可变)”意味着一个对象一旦创建,其内部状态就不能被修改。对于集合来说,这就意味着...

    kotlinx.collections.immutable:Kotlin的不可变持久集合

    在Kotlin编程中,`kotlinx.collections.immutable`库提供了对不可变和持久性集合的支持。这个库是Kotlin生态系统的一部分,旨在帮助开发者构建更安全、更易于维护的代码,尤其是在多线程环境中。不可变集合是那些...

    Go的不可变集合-Golang开发

    通过要求对Immutable进行编辑,不可变集合可以提供高效,无锁的数据共享。此存储库包含Go的不可变集合类型。 它包括List,Map和SortedMap实现。 通过要求对集合的编辑返回新的集合,不可变的集合可以提供有效的,...

    immutable-views:其他集合对象的不变视图

    不可变视图-其他集合对象的不可变视图概述immutable-views包提供的集合类是其他(可变)集合对象上的不可变视图: 另一个映射对象的不可变视图。 在另一个列表(序列)对象上的变视图。 在另一个set对象上的变视图。...

    java-immutable-collections:Java不可变的基于数组的集合

    ImmutableCollections-基于数组的Java不可变集合 版权所有(c)2017 Nicholas Cull 有关许可信息,请参阅LICENSE.txt。 Java 1.8的基于数组的不可变集合 排序和未排序的变体 风格类似于番石榴收集包装 空友好 Java 8...

    浅谈Python中的可变与不可变数据类型.pdf

    而不可变类型(Immutable types),指的是对象的内容一旦创建后就不能被改变,如果要修改,Python会重新在内存中创建一个新的对象来存储新的值,原对象保持不变。不可变类型包括整数(int)、浮点数(float)、字符...

    Scala-part2集合框架

    - **不可变集合**:默认导入的包`scala.collection.immutable`中包含了所有不可变集合的实现。 - **可变集合**:要使用可变集合,需要导入包`scala.collection.mutable`。 接下来,我们将详细探讨这三种核心集合...

    ImmutableArray原型方法Per方法包的集合

    在JavaScript的世界里,`Immutable`概念的引入是为了创建不可变数据结构,这在处理复杂数据时能带来很多好处,如避免意外修改、提高代码可预测性以及优化性能。`ImmutableArray`是实现这一概念的一个库,它扩展了...

    21-C-ImmutableObject-Code.zip

    4. **不可变集合**:使用`System.Collections.Immutable`库提供的不可变集合,如`ImmutableArray&lt;T&gt;`、`ImmutableDictionary, TValue&gt;`等。 在实际应用中,不可变对象可以带来以下好处: - **线程安全**:不可变...

    immutables,用于创建不可变对象和生成器的注释处理器。感觉像是番石榴的不可变集合,但对于常规值对象。包括json、jackson、gson、jax-rs、mongodb集成.zip

    Immutables是一个强大的Java库,专门用于创建不可变对象,并且提供了一个注解处理器来简化这一过程。在软件开发中,不可变对象是那些一旦创建就不能改变其状态的对象,这有助于提升程序的安全性、可预测性和并发性能...

    immutable-model:由 Immutable.js 支持的不可变模型和集合抽象

    `Immutable.js`是一个流行的JavaScript库,它提供了丰富的不可变数据结构,如列表、映射、集合等,以及一系列高效的操作方法,以支持这一编程范式。 `Immutable.js`的核心概念: 1. **不可变性**:一旦创建,数据...

Global site tag (gtag.js) - Google Analytics