美文网首页
Guava——Collections New collectio

Guava——Collections New collectio

作者: 爱吃菜的流浪狗 | 来源:发表于2019-01-02 14:51 被阅读0次

    1.Multiset

    在Collection的基础上,拓展了对重复元素的处理方法。

    public interface Multiset extends Collection<E> {

        int count(@Nullable Object var1);

        int add(@Nullable E var1, int var2);

        int remove(@Nullable Object var1, int var2);

        int setCount(E var1, int var2);

        boolean setCount(E var1, int var2, int var3);

        Set<E> elementSet();

        Set<Multiset.Entry<E>> entrySet();

        boolean equals(@Nullable Object var1);

        int hashCode();

        String toString();

        Iterator<E> iterator();

        boolean contains(@Nullable Object var1);

        boolean containsAll(Collection<?> var1);

        boolean add(E var1);

        boolean remove(@Nullable Object var1);

        boolean removeAll(Collection<?> var1);

        boolean retainAll(Collection<?> var1);

        public interface Entry<E> {

            E getElement();

            int getCount();

            boolean equals(Object var1);

            int hashCode();

            String toString();

        }

    }

    2.Multimap

    内部实现了Map<K, List<V>> or Map<K, Set<V>>,Multimap 提供了一个方便地把一个键对应到多个值的数据结构。

    特点:不会有任何键映射到空集合:一个键要么至少到一个值,要么根本就不在Multimap中。

    public interface Multimap<K, V> {

        int size();

        boolean isEmpty();

        boolean containsKey(@Nullable Object var1);

        boolean containsValue(@Nullable Object var1);

        boolean containsEntry(@Nullable Object var1, @Nullable Object var2);

        boolean put(@Nullable K var1, @Nullable V var2); //添加单个键值对

        boolean remove(@Nullable Object var1, @Nullable Object var2); //移除键到值的映射,如果有这样的键值就移除并返回true

        boolean putAll(@Nullable K var1, Iterable var2); //依次添加键到多个值映射

        boolean putAll(Multimap

        Collection<V> replaceValues(@Nullable K var1, Iterable var2); //清除键对应的所有值,并重新把key关联到迭代器的每个元素中,返回元素包含之前所有映射

        Collection<V> removeAll(@Nullable Object var1);

        void clear();

        Collection<V> get(@Nullable K var1); //得到键对应的值的集合

        Set<K> keySet();

        Multiset<K> keys();

        Collection<V> values();

        Collection<Entry<K, V>> entries();

        Map<K, Collection<V>> asMap();

        boolean equals(@Nullable Object var1);

        int hashCode();

    }

    3.BiMap

    双向map,能通过Key与values之间可以互相查找

    BiMap接口的实现

    public interface BiMap extends Map<K, V> {

     V put(K key,  V value); //存放键值,存放的值已经存在在另一个Key中时会抛出  IllegalArgumentException异常

     V forcePut( K key,  V value); //强制放入,会把之前存在的键值删除重新放入。

     void putAll(Map

     Set values(); //返回值的Set

     BiMap inverse(); //反响查找,即通过调用反向查找,可以通过.get方法获得对应的key

    }

    常用实现

    HashBiMap: key 集合与 value 集合都有 HashMap 实现

    EnumBiMap: key 与 value 都必须是 enum 类型

    ImmutableBiMap: 不可修改的 BiMap

    4.Table

         Table是Guava提供的一个接口 Interface Table<R,C,V>,由rowKey+columnKey+value组成 它有两个键,一个值,和一个n行三列的数据表类似,n行取决于Table对对象中存储了多少个数据。个人理解,相当于一个二维数组,行列两个元素确定一个values值

       实际上实现为,Map> 这样的形式

    public interface Table<R, C, V> {

        boolean contains(@Nullable Object var1, @Nullable Object var2); //类内部实现为  调用containsRow和containsColumn

        boolean containsRow(@Nullable Object var1);

        boolean containsColumn(@Nullable Object var1);

        boolean containsValue(@Nullable Object var1);

        //以上是确定 是否包含行 列 值

        V get(@Nullable Object var1, @Nullable Object var2);

        // 通过 行列值得到键

        boolean isEmpty();//判断是否为空

        int size(); //返回map的 值的个数

        boolean equals(@Nullable Object var1); 

        int hashCode();

        void clear();//清除所有 cell

        V put(R var1, C var2, V var3); //存放

        void putAll(Table

        V remove(@Nullable Object var1, @Nullable Object var2); //先用R也就是行去获得了列的map,然后再用列的map去做具体处理。

        Map row(R var1); //取得 row map

        Map column(C var1); //取得 colum map

        Set<Table.Cell<R, C, V>> cellSet();

        Set<R> rowKeySet();

        Set<C> columnKeySet();

        Collection values(); //得到Collection

        Map> rowMap(); //返回 列map

        Map> columnMap(); //返回行map

        public interface Cell<R, C, V> {

            R getRowKey();

            C getColumnKey();

            V getValue();

            boolean equals(@Nullable Object var1);

            int hashCode();

        }

    }

    5. ClassTolnstanceMap

    ClassToInstanceMap提供了一种是用Class作为Key, 对应实例作为Value的途径.他定义了T getInstance(Class<T>)和T putInstance(Class<T> T)两个方法, 这两个方法消除了元素类型转换的过程并保证了元素在Map中是类型安全的.

    public interface ClassToInstanceMap extends Map

         T putInstance(Class var1, @Nullable T var2);

    }

    ClassToInstanceMap<Number> map = MutableClassToInstanceMap.create();

    map.putInstance(Integer.class, Integer.valueOf(0));

    map.putInstance(Integer.class, 100);

    map.putInstance(Float.class, 10.01f);

    TestDemo testDemo = new TestDemo();

    ClassToInstanceMap<TestDemo> map1= MutableClassToInstanceMap.create();

    map1.putInstance(TestDemo.class,testDemo);

    System.out.println(map.getInstance(Integer.class));

    System.out.println(map.getInstance(Float.class));

    map1.getInstance(TestDemo.class).show();

    //他是一个由B的子类和B的实例构成的Map -- 通常, B就是Object

    6.RangeSet

    RangeSet类是用来存储一些不为空的也不相交的范围的数据结构

    Guava 中定义了 Range Range定义了连续跨度的范围边界,这个连续跨度是一个可以比较的类型(Comparable type)。比如1到100之间的整型数据。

    Guava Range 概念,范围和方法

    概念表示范围guava对应功能方法

    (a..b){x | a < x < b}open(C, C)

    [a..b]{x | a <= x <= b} closed(C, C)

    [a..b){x | a <= x < b}closedOpen(C, C)

    (a..b]{x | a < x <= b}openClosed(C, C)

    (a..+∞){x | x > a}greaterThan(C)

    [a..+∞){x | x >= a}atLeast(C)

    (-∞..b){x | x < b}lessThan(C)

    (-∞..b]{x | x <= b}atMost(C)

    (-∞..+∞)all valuesall()

    public interface RangeSet

        boolean contains(C var1);

        Range<C> rangeContaining(C var1);

        boolean encloses(Range<C> var1);

        boolean enclosesAll(RangeSet<C> var1);

        boolean isEmpty();

        Range<C> span();

        Set<Range<C>> asRanges();

        RangeSet<C> complement();

        RangeSet<C> subRangeSet(Range<C> var1);

        void add(Range<C> var1);

        void remove(Range<C> var1);

        void clear();

        void addAll(RangeSet<C> var1);

        void removeAll(RangeSet<C> var1);

        boolean equals(@Nullable Object var1);

        int hashCode();

        String toString();

    }

    相关文章

      网友评论

          本文标题:Guava——Collections New collectio

          本文链接:https://www.haomeiwen.com/subject/coszlqtx.html