Java学习之容器(1)---Collection和Map

如图所示,容器分为Collection和Map两个大类。其中Collection又分为Set和List两个子类。以上的类都是抽象类,其特点如下:

  • Set:没有顺序,不可重复;
  • List:有顺序,可以重复;
  • Map:存储“键(key)-值(value) 对”。

在这里插入图片描述

泛型Generics

相当于一个参数,在类的定名名称后面加<E>以表示泛型(或者多个<E,V>等)。类的属性和方法中可以使用E定义属性,如E name

在使用的的时候需要传入具体的<E>参数,如<String>

Collection接口

Collection 表示一组对象,它是集中、收集的意思。Collection接口的两个子接口是List、Set接口。
在这里插入图片描述

List接口

List是有序、可重复的容器

List接口常用的实现类有3个:ArrayList、LinkedList和Vector。

ArrayList底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全。我们一般使用它。
LinkedList底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全
Vector底层是用数组实现的List,相关的方法都加了同步检查,因此“线程安全,效率低”。

Map接口

Map是用来存储“键(key)-值(value) 对”的。

Map 接口的实现类有HashMap、TreeMap、HashTable、Properties等。
在这里插入图片描述
HashMap: 线程不安全,效率高。允许key或value为null。
HashTable: 线程安全,效率低。不允许key或value为null。

HashMap采用哈希算法实现,是Map接口最常用的实现类。 由于底层采用了哈希表存储数据,我们要求键不能重复,如果发生重复,新的键值对会替换旧的键值对。 HashMap在查找、删除、修改方面都有非常高的效率。 HashMap底层实现采用了哈希表的数据结构。
在这里插入图片描述

TreeMap是红黑二叉树的典型实现。TreeMap和HashMap实现了同样的接口Map,因此,用法对于调用者来说没有区别。
HashMap效率高于TreeMap;在需要排序的Map时才选用TreeMap。

猜你喜欢

转载自blog.csdn.net/Arthur_____/article/details/88087925
今日推荐