dw3306

java常用集合

 

简介

      Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是Map(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayListLinkedListHashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

 

集合接口

接口 接口描述
Collection 接口

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

Collection 接口存储一组不唯一,无序的对象。

List 接口

List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

List 接口存储一组不唯一,有序(插入顺序)的对象。

Set接口

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

Set 接口存储一组唯一,无序的对象。

SortedSet
继承于Set保存有序的集合。
Map

Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
SortedMap
继承于 Map,使 Key 保持在升序排列。
Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

 

Set和List的区别

1:list的子类          :list集合包含重复元素,并且有序(存储顺序和取出顺序一致);

      ArrayList:      底层是数组,线程不安全,查询快,增删慢,效率高;

      vector:          底层是数组,线程安全,查询快,增删慢,效率低;

     linkedList:      底层是链表,线程不安全,查询慢,增删快,效率高;

 

2:set类集合:   set集合不包含重复,具有唯一性;

       HashSet:                  唯一性;

      LinkedHashSet :      底层是hash表(唯一性)和链表(存放和取出有序)组成,所以具有唯一性和有序性;

       TreeSet :                   唯一性,集合内部有两种排序方式:自然排序 和 比较器排序;

 

 3: Map类集合:          键值对集合,键具有唯一性;

       HashMap:     存储无序,键具有唯一性;

       TreeMap:       存储为自然排序,键具有唯一性;

       LinkedHashMap:    存放和取出有序,键具有唯一性;

       

 

 

 

面试相关:

      1:HashMap与Hashtable的区别:

          HashMap:   线程不安全,允许null键和null值;

          Hashtable:   线程安全,不允许null键和null值;

      2:list、set、Map是否都是继承map ??

          否,list、set继承的collection接口,而map接口本身就是一个顶层接口;

 

        3:collection与collections的区别:

             collection :   是单列集合的顶层接口,有子接口list、set;

             collections:   是针对集合操作的工具类,像常用的:对集合进行排序和二分查找;

    collections的常用方法:      

             collections里面都是静态方法:

                               collections.sort(List<>  list)   :集合的自然排序;

                               collections.binarySearch(List<>  list  ,T   key)   : 集合的二分查找;

                               collections.max()          :  获取最大值;

                               collections .reverse()       :  元素反转;

                                      collections .shuffle()      :    元素位置随机置换;

 4:开发中如何使用线程安全的集合?

List<Object> objects = Collections.synchronizedList(new ArrayList<>());

 

分类:

技术点:

相关文章: