Guava中的集合

需要包:guava.jar

1.Collections(对集合的扩展)

  主要包括不可变集合,多值Map,Table表和集合工具类

  1_1.不可变集合(immutable):ImmutableList,ImmutableMap,ImmutableSet,ImmutableSoredtMap,ImmutableSortedSet

    ImmutableList:可以存放相同的值

    ImmutableMap:存放键值对

    ImmutableSet:存放的是唯一的值

    ImmutableList,ImmutableMap,ImmutableSet调用的是of()方法

    ImmutableSoredtMap,ImmutableSortedSet会进行排序,调用的是copyOf() 

public static void main(String[] args) {
        ImmutableList<String> l =ImmutableList.of("张三","李四","张三") ;
        ImmutableMap<String, String> m = ImmutableMap.of("name", "张三", "age","20","sex","男") ;
        ImmutableSet<String> s = ImmutableSet.of("张三","李四","张三") ;
        Map<String,String> map = new HashMap<String,String>() ;
        map.put("name", "张三") ;
        map.put("age", "20") ;
        map.put("sex", "男") ;
        ImmutableSortedMap<String, String> ss = ImmutableSortedMap.copyOf(map) ;
        Set<Integer> set = new TreeSet<Integer>() ;
        set.add(1) ;
        set.add(9) ;
        set.add(4) ;
        ImmutableSet<Integer> mi = ImmutableSet.copyOf(set) ;
        System.out.println("---------"+l);
        System.out.println("---------"+m);
        System.out.println("---------"+s);
        System.out.println("---------"+ss);
        System.out.println("---------"+mi);
        结果: ---------[张三, 李四, 张三]
             ---------{name=张三, age=20, sex=男}
             ---------[张三, 李四]
             ---------{age=20, name=张三, sex=男}
             ---------[1, 4, 9]
    }

   1_2.多值Map,MultiMap

    在普通Map中,如果两个键相等,则会覆盖一个,而有时候,比如保存名字的时候,名字可能重复,这时候就可以用多值Map,MultiMap

public static void main(String[] args) {
        Multimap<String, String> names = ArrayListMultimap.create() ;
        names.put("name", "张三") ;
        names.put("name", "张三") ;
        System.out.println("----------"+names);
        结果:----------{name=[张三, 张三]}
    }

  1_3.Table表

    通过两个点确定一个值,如通过地图的经度、纬度,确定一个地方

public static void main(String[] args) {
        Table<Double, Double, String> area = HashBasedTable.create() ;
        area.put(21.3, 154.9, "重庆XXX广场") ;
        System.out.println("-------------"+area.get(21.3, 154.9));
        结果:-------------重庆XXX广场
    }

  1_4.集合工具类,Sets,Maps,Lists

    Maps的过滤 

public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<String,Integer>() ;
        map.put("张三", 20) ;
        map.put("李四", 23) ;
        map.put("王五", 18) ;
        Map<String,Integer> m = Maps.filterValues(map, new Predicate<Integer>() {
            @Override
            public boolean apply(Integer age) {
                return age<23 ;
            }
        }) ;
        
        System.out.println("--------------"+m);
        结果:--------------{张三=20, 王五=18}
    }

    

    

原文地址:https://www.cnblogs.com/-scl/p/7676666.html