依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
不可变集合与对象
优点:1、线程安全 2、可用作常熟
ImmutableXXX
创建方式:1、copeOf 2、of 3、Builder
代码:
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
//Immutablexxx collection set list map sortedMap 等等
//三种方法:copyOf of builder
ImmutableSet<String> set2 = ImmutableSet.copyOf(set);
ImmutableSet<String> set3 = ImmutableSet.of("d", "f", "g");
ImmutableSet.Builder<Object> add = ImmutableSet.builder().add("a", "d", "ddd");
HashMap<Integer, String> map = new HashMap<Integer, String>();
map.put(1,"姓名");
map.put(2,"年龄");
map.put(3,"学院");
ImmutableMap<Integer, String> immutableMap = ImmutableMap.copyOf(map);
ImmutableMap.Builder<Integer, String> map2 = ImmutableMap.<Integer, String>builder().put(1, "姓名").put(2, "年龄").put(3, "学院");
System.out.println("key=2,结果是:"+immutableMap.get(2));
}
guava对应jdk各种不可变版本
?Multiset 可重复集合和Multimap 多重映射
Multiset相当于内部做了一个map,multimap相当于
代码:
public static void main(String[] args) {
//multiset 内部使用一个 HashMap 来维护
HashMultiset<String> setMulti = HashMultiset.create();
setMulti.add("1");
setMulti.add("1");
System.out.println("1的数量有:"+setMulti.count("1"));
}
multimap的多种实现:有序、无序
?BiMap 双向映射
Map<String, Integer> nameToId = Maps.newHashMap();
Map<Integer, String> idToName = Maps.newHashMap();
nameToId.put("Bob", 42);
idToName.put(42, "Bob");
Stopwatch秒表基本用法
new StopWatch(); // new StopWatch("");
watch.start(); // 启动 watch.start("");
watch.stop(); // 暂停
watch.getLastTaskName(); // 上个任务名称
watch.getLastTaskTimeMillis(); // 上个任务毫秒数
watch.getLastTaskInfo(); // 包含3个信息,如: {"taskName":"task0","timeMillis":1000,"timeSeconds":1.0}
watch.getTaskCount(); // 总任务数
watch.getTotalTimeMillis(); // 总毫秒
watch.getTotalTimeSeconds(); // 总秒数
watch.getId(); // 多秒表才用的到
|