当前位置: 首页 > Thinking in Java > 正文

第11章 – 持有对象 – 总结,Collection 和 Map

第11章 – 持有对象 – 总结,Collection 和 Map

1. Java集合主要有两类 Collection 和 Map(都是接口)

   1.1 Collection 有 List,Set,Queue接口

1.1.1 List 

 List本身维持了元素的插入顺序,如ArrayList,LinkedList,

List实现中没有让元素按照自然排序方式存储的实现(类似TreeSet这类的).

但是可以使用工具类的下面两个方法来排序

static <T extends Comparable<? super T>> void  sort(List<T> list) 

 根据元素的自然顺序 对指定列表按升序进行排序。 

static <T> void sort(List<T> list, Comparator<? super T> c) 

根据指定比较器产生的顺序对指定列表进行排序。

自然顺序排序时,要求放入List中的元素实现了comparable接口.

或者传入一个Comparator排序. 

   1.1.2 Set

     Set不保存重复的元素,即Set中的元素是没有重复的.Set具有和Collection完全一样的接口.

     Set常见的实现有HashSet,LinkedHashSet和TreeSet

     其中,HashSet内部使用HashMap来保存元素,不保证元素按照插入顺序保存.

     而LinkedHashSet在迭代时,保证按照元素的插入顺序迭代.

     TreeSet可以将元素按照自然顺序排序,然后存放.所以TreeSet中的元素需要实现Comparable接口

     或者在构造TreeSet时传入一个Comparator.实际上TreeSet实现了Set的一个子接口SortedSet,从而

     实现了对Set中元素按照自然顺序排序.

  1.1.3 Queue

     Queue是一个典型的先进先出(FIFO)容器.

     LinkedList实现了Queue.

     Queue的另外一个实现类 public class PriorityQueue<E>extends AbstractQueue<E>implements Serializable

     称为优先级队列,此队列中的元素需要实现Comparable接口以便按照自然顺序决定优先级.

     此队列的头 是按指定排序方式确定的最小 元素。

     如果多个元素都是最小值,则头是其中一个元素——选择方法是任意的。

     队列获取操作 poll、remove、peek 和 element 访问处于队列头的元素。 

  1.2 Map

      Map的地位是和Collection等同的.

      Map保存的是键值对. 一个键对应一个对象,不能有重复的键.但是不同的键可以对应同一个对象. 

      这样一个Map就可以派生出以下三个视图:

      (1) 包含所有键的Set(因为键是不能重复的),通过 Set<K> keySet() 返回此映射中包含的键的 Set 视图。 

      (2) 包含所有键对应的对象的对象Collection, 通过 Collection<V> values() 返回此映射中包含的值的 Collection 视图。 

      (3) 包含所有键值对的set. 

          通过Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。 

          因为Map的键值对都是一个实现了Map.Entry<K,V>接口的对象,因为键的唯一导致这个键值对也是唯一的.

          所以所有键值对的集合就是一个Set.

          Map.Entry<K,V>接口的方法如下:

          boolean equals(Object o) 比较指定对象与此项的相等性。 

K getKey() 返回与此项对应的键。 

V getValue()  返回与此项对应的值。 

int hashCode() 返回此映射项的哈希码值。 

V setValue(V value) 用指定的值替换与此项对应的值(可选操作)。 

 

 Map实现类,HashMap,HashTable,LinkedHashMap,TreeMap等.

 其中HashTable是线程安全的,

 LinkedHashMap 维持着键值对的插入顺序,

 TreeMap中的键是按照键对象进行自然排序法,排好序的.

赞 赏

   微信赞赏  支付宝赞赏


本文固定链接: https://www.jack-yin.com/coding/thinking-in-java/2116.html | 边城网事

该日志由 边城网事 于2015年03月18日发表在 Thinking in Java 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 第11章 – 持有对象 – 总结,Collection 和 Map | 边城网事

第11章 – 持有对象 – 总结,Collection 和 Map 暂无评论

发表评论

快捷键:Ctrl+Enter