Map / LinkedListMultimap / HashB

2020-03-03  本文已影响0人  龙剑灵
        //不可变map
        ImmutableMap<String, String> immutableMap = Maps.uniqueIndex(list, k -> k + "_key");
        System.out.println(immutableMap);//{1_key=1, 2_key=2, 3_key=3, 4_key=4}

        //可变map
        Map<String, String> map = Maps.asMap(Sets.newHashSet("1", "2", "3"), k -> k + "_val");
        System.out.println(map);//{1=1_val, 2=2_val, 3=3_val}

        Map<String, String> transMap = Maps.transformValues(map, v -> v + "_tran");
        System.out.println(transMap);//{1=1_val_tran, 2=2_val_tran, 3=3_val_tran}

        //过滤map的key
        Map<String, String> filterMap = Maps.filterKeys(map, k -> Lists.newArrayList("1", "2").contains(k));
        System.out.println(filterMap);//{1=1_val, 2=2_val}

        //Joiner实例是线程安全的
        Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
        System.out.println(mapJoiner.join(filterMap));//1=1_val,2=2_val


        LinkedListMultimap<String, String> multimap = LinkedListMultimap.create();
        multimap.put("a", "111");
        multimap.put("a", "666");
        multimap.put("c", "333");

        System.out.println(multimap); //{a=[111, 666], c=[333]}
        System.out.println(multimap.get("a")); // [111, 666]


    @Test
    public void testMultimaps() {
        Multimap<String, String> multimap = ArrayListMultimap.create();
        multimap.put("1", "1");
        multimap.put("1", "2");
        multimap.put("1", "3");
        multimap.put("5", "25");

        System.out.println("multimap: " + multimap);//multimap: {1=[1, 2, 3], 5=[25]}

        System.out.println(multimap.keys()); //[1 x 3, 5]
        System.out.println(multimap.keySet()); //[1, 5]
        System.out.println(multimap.get("1")); //[1, 2, 3]
    }

    //HashBiMap存储的键和值都只能唯一,不存在键与键、值与值相同的情况
    @Test
    public void test() {
        HashBiMap<String, String> hashBiMap = HashBiMap.create();
        hashBiMap.put("1", "2");
        System.out.println(hashBiMap);
        //hashBiMap.put("2", "2"); //value already present: 2
        System.out.println(hashBiMap);
    }

    @Test
    public void testInverse() {
        HashBiMap<String, String> hashBiMap = HashBiMap.create();
        hashBiMap.put("1", "22");
        hashBiMap.put("3", "44");
        hashBiMap.put("5", "66");
        System.out.println(hashBiMap);//{1=22, 3=44, 5=66}
        BiMap<String, String> inverse = hashBiMap.inverse();//反转是生成新的对象,不改变原map
        System.out.println(hashBiMap);//{1=22, 3=44, 5=66}
        System.out.println(inverse);//{22=1, 44=3, 66=5}
    }

    @Test
    public void testForcePut() {
        HashBiMap<String, String> hashBiMap = HashBiMap.create();
        hashBiMap.put("1", "22");
        //hashBiMap.put("2", "22"); //value already present: 22
        hashBiMap.forcePut("2", "22");

        System.out.println(hashBiMap); //{2=22}
    }
上一篇下一篇

猜你喜欢

热点阅读