Google Guava 学习记录《4》Immutable Set

Immutable objects have many advantages, including:

  • Safe for use by untrusted libraries.
  • Thread-safe: can be used by many threads with no risk of race conditions.
  • Doesn‘t need to support mutation, and can make time and space savings with that assumption. All immutable collection implementations are more memory-efficient than their mutable siblings (analysis)
  • Can be used as a constant, with the expectation that it will remain fixed

Example

public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of(
  "red",
  "orange",
  "yellow",
  "green",
  "blue",
  "purple");

class Foo {
  final ImmutableSet<Bar> bars;
  Foo(Set<Bar> bars) {
    this.bars = ImmutableSet.copyOf(bars); // defensive copy!
  }
}

不可变的集合,其实是保证了最重要的安全性,还有性能上的提升。

也可以对这种集合做排序,比如调用ImmutableSortedSet  这个排序是在构造函数阶段排序的。

时间: 2024-10-26 00:59:09

Google Guava 学习记录《4》Immutable Set的相关文章

Google Guava 学习记录《一》

Guava 在Google code 上地址:https://code.google.com/p/guava-libraries/ 首先为什么要学习这个库,在实习的时候看大神的代码很简洁,很多地方将一些琐碎凌乱的代码轻松解决,所以抱着试试看的心态搞搞吧. 第一部分:basic utilities null 问题的处理 理解Optional<T> ,首先要理解为什么出现这个.在Java中null其实代表的意思在不同的content下是不同的,比如一个值可能是null或者是真的不存在.在Map.g

Google Guava 学习记录《二》 Precondition

1 int i = 4; 2 int j = 5; 3 Preconditions.checkArgument(i>j,"i should bigger than j, but i is %s and j is %s",i,j); Exception in thread "main" java.lang.IllegalArgumentException: i should bigger than j, but i is 4 and j is 5 at com.

Google Guava 学习记录《Three》 Ordering

Ordering我看了好多遍中文文档,加一些实例终于算是搞清楚怎么回事了. 他是干什么的? 就像他名字一样,用来ordering 排序的.. 主要有两种方法. 1 用它的静态方法排序. 比如 Ordering.natural();    对可排序类型做自然排序,如数字按大小,日期按先后.  natual()的官方解释翻译. 2 用自己定义的Ordering 比如你要根据字符串的长度排序. public void orderBasedOnLength(){ Ordering<String> by

Google Guava学习笔记——简介

Google Guava是什么东西?首先要追溯到2007年的“Google Collections Library”项目,它提供对Java 集合操作的工具类.后来Guava被进化为Java程序员开发必备的工具.Guava可以对字符串,集合,并发,I/O,反射进行操作. 在软件开发过程中,我们自认为可以什么都能做,我们本能的去写自己的类库来处理一些日常的问题.当然,我们认为自己写的代码是坚不可摧的,并且是经过单元测试的.实际上,我们没有我们认为的那么聪明,换句话说,它不在于你有多聪明,而是在于编写

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

不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis) 4.可以被使用为一个常量,并且期望

Google Guava学习笔记——基础工具类Preconditions类的使用

Preconditions类是一组静态方法用来验证我们代码的状态.Preconditons类很重要,它能保证我们的代码按照我们期望的执行,如果不是我们期望的,我们会立即得到反馈是哪里出来问题,现在我们使用Preconditions来保证我们代码的行为,并且对调试也非常方便. 当然,你也可以自己写预处理的代码,就像下面一样: if (someObj == null) { throw new IllegalArgumentException(" someObj must not be null&qu

[Google Guava]学习--新集合类型Multimap

每个有经验的Java程序员都在某处实现过Map<K, List<V>>或Map<K, Set<V>>,并且要忍受这个结构的笨拙. 假如目前有个需求是给两个年级添加5个学生,并且统计出一年级学生的信息: public class MultimapTest { class Student { String name; int age; } private static final String CLASS_NAME_1 = "一年级"; pr

Google Guava学习笔记——基础工具类String处理类的使用

不管你喜欢何种编程语言,很多时候针对string编程的处理都是乏味而且爱出错误的,很多时候,我们需要从文件或是数据库中读取数据,或者根据需求重新格式化或排序字符串给用户显示.幸运的是,Guava提供了一些非常有用的类,来很容易的处理String的问题,这些类有: CharMatcher Charsets Strings 使用Charsets类 在Java平台,Java支持6种标准字符集,它经常出现在下面的代码中: byte[] bytes = someString.getBytes(); 但上面

Guava学习

Guava学习笔记目录 Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦.下面是学习过程中的一些笔记和知识点的记录. 1.Guava学习笔记:Google