本文共 2330 字,大约阅读时间需要 7 分钟。
不可变对象有很多优点,包括:
JDK也提供了Collections.unmodifiableXXX方法把集合包装为不可变形式,但我们认为不够好:
示例如下(ImmutableSet):
package com.cyq.test;import java.awt.Color;import java.util.Arrays;import java.util.List;import com.google.common.collect.ImmutableSet;import com.google.common.collect.ImmutableSortedSet;import com.google.common.collect.UnmodifiableIterator;/** * @author cyq * */public class ImmutableSetTest { public ImmutableSetTest() { //构造方法一: copyOf方法 Listlist=Arrays.asList("1","3","2"); ImmutableSet immutableSet1 = ImmutableSet.copyOf(list); immutableSet1.forEach(System.out::println); System.out.println("-----------------------"); //构造方法二: of方法 ImmutableSet immutableSet2 = ImmutableSet.of("a", "c", "b"); immutableSet2.forEach(System.out::println); System.out.println("-----------------------"); //构造方法三: Builder工具 ImmutableSet immutableSet3 = ImmutableSet. builder() .add(new Color(0, 191, 255)) .add(new Color(12, 191, 255)) .add(new Color(14, 191, 255)) .build(); immutableSet3.forEach(System.out::println); System.out.println("-----------------------"); //此外,对有序不可变集合来说,排序是在构造集合的时候完成的,如: ImmutableSortedSet sortedSet = ImmutableSortedSet.of("a", "c", "b", "a", "d", "b"); UnmodifiableIterator iterator = sortedSet.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next());//a, b, c, d } } public static void main(String[] args) { new ImmutableSetTest(); }}
关联可变集合和不可变集合:
可变集合接口 | 属于JDK还是Guava | 不可变版本 |
---|---|---|
Collection | JDK | ImmutableCollection |
List | JDK | ImmutableList |
Set | JDK | ImmutableSet |
SortedSet/NavigableSet | JDK | ImmutableSortedSet |
Map | JDK | ImmutableMap |
SortedMap | JDK | ImmutableSortedMap |
Multiset | Guava | ImmutableMultiset |
SortedMultiset | Guava | ImmutableSortedMultiset |
Multimap | Guava | ImmutableMultimap |
ListMultimap | Guava | ImmutableListMultimap |
SetMultimap | Guava | ImmutableSetMultimap |
BiMap | Guava | ImmutableBiMap |
ClassToInstanceMap | Guava | ImmutableClassToInstanceMap |
Table | Guava | ImmutableTable |
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。可以跳转到教程。
转载地址:http://lymgb.baihongyu.com/