集合(Collection接口 和 Map接口)详解

集合(Collection接口 和 Map接口)详解

一、集合

1.1 与数组类似。集合实际上就是一个容器、一个载体,可以用来容纳其它类型的数据。

注:集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合中存储的都是java对象的内存地址(或者说集合中存储的是引用

list.add(100)//java中有个自动装箱,变成了Integer

1.2 在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合中存储元素,等于将数据放到了不同的数据结构(数据存储的结构)当中,不同的数据结构,数据存储方式不同,即,使用不同的集合等同于使用了不同的数据结构

常用的数据结构:数组、二叉树、链表、哈希表 · · · · · ·

注:不会数据结构没关系(虽然我正在学),java中已经将数据结构实现了,写好了,只需要学会怎么使用,在什么情况下选择哪一种合适的集合去使用即可 new

1.3 所有的集合类和集合接口都在 java JDK中java.util包下

java.util.*;

1.4 在java中 集合分为两大类

一类:是单个方式存储元素

​ 单个方式存储元素,这一类元素的超级父接口:java.util.Collection;

一类:是以键值对的方式存储元素

​ 以键值对的方式存储元素,这一类元素的超级父接口:java.util.Map;

二、Collection接口

有三个常见的子接口:List、Set和Queue

List接口(有序可重复)

特点:

  • 集合中的元素是有序的(存进去的顺序,取出来还是这个顺序,不是按照升降序的意思)
  • 存储的元素都有下标,下标从0开始,以1递增
  • 允许有重复的元素

三个常见的实现类:LinkedList、ArrayList和Vector。

  • ArrayList:用数组实现的List——随机存取效率高,增删效率低 轻量级。线程不安全。

  • LinkedList:用双向循环链表 实现的List——随机存取效率低,增删效率高。线程不安全。

  • Vector:用数组实现的List——重量级,占据更多的系统开销。线程安全。(使用少)
    在这里插入图片描述

Set接口(无序不可重复)

特点:

  • 集合中的元素是无序的(存进去的顺序,取出来就不一定是这个意思,不是按照升降序的意思)

  • 存储的元素没有下标元素

  • 不能重复

两个常见的实现类:HashSet和TreeSet类

  • HashSet:用了哈希表数据结构
  • TreeSet(父接口 SortSet,SortSet父接口Set):用了二叉树数据结构
    在这里插入图片描述

Queue接口

在这里插入图片描述

Collection集合继承图

在这里插入图片描述

三、Map接口

Map和Collection没有关系;以key和value的这种键值对的方式存储元素;key和value都是存储java对象的存储地址:Map集合的key和Set集合存储元素相同,无序不重复

三个常见的实现类:HashMap、TreeMap和HashTable

HashMap:用了哈希表数据结构,是非线程安全

HashTable:用了哈希表数据结构,是线程安全的,里面的所有方法都带有synchronized关键字,效率较低(使用少)

TreeMap(父接口SortedMap,SortedMap父接口Map):用了二叉树数据结构

#SortedMap集合的key存储,首先是无序不可重复的,其次是集合中key部分的元素会自动按照大小排序,称为可排序的集合

Map集合继承图

在这里插入图片描述

注:图片看不清的,可以自己去查查java帮助文档,基本都有

 

posted @ 2021-01-15 02:08  许君  阅读(479)  评论(0编辑  收藏  举报