guava 随笔

0. 生病需要休息的同时,不舒服的感觉也让人休息受到影响

guava的一份中文文档

1. collect

Guava Collections实战使用
gitee

import com.google.common.collect.*;

import java.util.*;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArraySet;

/**
 * @Author: weng
 * @Date: 2022/5/10
 * @Description: com.weng.cloud.service8881.guava
 *
 * @see <a href="https://www.jianshu.com/p/a69d72266c27">Guava Collections实战使用</a>
 */

public class TestCollections {

    static Set<String> set = Sets.newHashSet("weng","chong","yu");

    public static void main(String[] args) {
        //testImmutable();
        //testMulti();
        //testBiMap();
        testTable();
    }

    private static void newCollection(){
        List list = Lists.newArrayList();
        ConcurrentMap<Object, Object> cMap = Maps.newConcurrentMap();
        CopyOnWriteArraySet<Object> set = Sets.newCopyOnWriteArraySet();
    }

    private static void testImmutable(){
        //jdk collections -> set.add/remove -> unmodifiableList也受到影响
//        Collection<Object> unmodifiableSet = Collections.unmodifiableCollection(set);
//        set.add("wcy");
//        System.out.println(unmodifiableSet);

        // 不是真正的不可变集合
        ImmutableSet<String> immutableSet = ImmutableSet.copyOf(set);
        set.add("wcy");
        System.err.println(immutableSet);
    }

    private static void testMulti(){
        // Map<ele,times>
        HashMultiset<String> multiset = HashMultiset.create(set);
        multiset.add("weng");
        // toString => [weng x 2, chong, yu]
        System.err.println(multiset);

        // Map<key,List<value>>
        HashMultimap<Integer, String> multiMap = HashMultimap.create();
        // ImmutableMultimap
        multiMap.put(8,"kobe");
        multiMap.put(6,"james");
        multiMap.put(8,"d-will");
        // toString => {6=[james], 8=[kobe, d-will]}
        System.out.println(multiMap);
    }

    private static void testBiMap(){

        //Map<key,Map<value,???>>
        HashBiMap<Integer, String> biMap = HashBiMap.create();
        biMap.put(8,"kobe");
        biMap.put(13,"booker");
        biMap.put(24,"kobe");
        //Exception in thread "main" java.lang.IllegalArgumentException: value already present: kobe
    }

    // 以下api有点意思,但是应用场景相对有限
    static void testElse(){
        // 构建基于内存的、过期策略的 concurrentHashMap,详见简书
        // guava.Collections作为主调的流式filter、map
        // guava.Collections作为主调的指定排序(搭配guava.ordering)
    }

    static void testTable(){
        //row、column、value 相当于二维集合了
        HashBasedTable<String, Integer, String> table = HashBasedTable.create();
        table.put("勇士",11,"佛祖");
        table.put("篮网",11,"欧文");
        table.put("勇士",0,"小佩顿");
        table.put("湖人",0,"威少");

        //{勇士={11=佛祖, 0=小佩顿}, 篮网={11=欧文}, 湖人={0=威少}}
        //System.out.println(table);

        //{11=佛祖, 0=小佩顿}
        //System.err.println(table.row("勇士"));

        //{勇士=小佩顿, 湖人=威少}
        //System.err.println(table.column(0));

//        (勇士,11)=佛祖
//        (勇士,0)=小佩顿
//        (篮网,11)=欧文
//        (湖人,0)=威少
        //table.cellSet().stream().forEach(cell -> System.out.println(cell));

        //[11, 0]
        //System.out.println(table.columnKeySet());

        //{勇士={11=佛祖, 0=小佩顿}, 篮网={11=欧文}, 湖人={0=威少}}
        //System.err.println(table.rowMap());

        //{11={勇士=佛祖, 篮网=欧文}, 0={勇士=小佩顿, 湖人=威少}}
        System.out.println(table.columnMap());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肯尼思布赖恩埃德蒙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值