Java集合框架中类和接口之间的关系

目录

Java集合框架中类和接口之间的关系

Collection常用方法 

Map常用方法 

List、Map、Set的应用场景

Java集合框架中类和接口之间的关系

首先,我发现了这样一幅图比较形象的描述

了Java集合框架中类和接口之间的关系:

第一张图(左): 

Collection继承了Iterable接口。List是链表 ,Queue 是队列,  Set 是集合,注意集合中的元素是不能重复的。AbstractList是抽象队列,继承了List;Deque是双端队列,继承了Queue; SortedSet是排序集合,继承了Set。

详细看看底下的类我们会发现
1. stack是栈,继承了Vector
2. ArrayList是顺序表,底层是用数组实现的
3. LinkedList是链表,底层是用双向链表实现的
4. PriorityQueue是优先级队列,底层是用堆(二叉树)实现的
5. TreeSet是二叉搜索树(排序)
6. HashSet是哈希表

接口之间的关系:

1. Collection :用来存储管理一组对象 objects ,这些对象一般被成为元素 elements
2. Set : 元素不能重复,背后隐含着 查找 / 搜索 的语义
3. SortedSet : 一组有序的不能重复的元素
4. List : 线性结构
5. Queue : 队列
6. Deque : 双端队列
7. Map : 键值对 Key - Value - Pair ,背后隐含着 查找 / 搜索 的语义
8. SortedMap : 一组有序的键值对
 
第二张图(右):

1. HashMap 实现了Map,是哈希表(不具有排序功能)
2. TreeMap 实现了SortMap,是二叉搜索树(具有排序功能)
ps:
Map存放数据根据key的值,进行哈希。然后存放到哈希表的对象的index下标的位置
key值一般不重复(如果重复会被覆盖)
哈希表的CURD的时间复杂度是O(1)

Collection常用方法 

 boolean add(E e);
将元素e放入集合中
 void clear();
删除集合中所有元素
boolean isEmpty();
判断集合是否为空
 boolean remove(Object e);
如果元素e出现在集合中,删除其中一个
int size(); 
返回集合中元素个数
Object[] toArray();
返回一个装有所有集合中元素的数组

Map常用方法 

V get(Object k);
根据指定的 k 查找对应的 v
V getOrDefault(Object k, V defaultValue);
根据指定的 k 查找对应的 v,没有找到用默认值代替
V put(K key, V value)
将指定的 k-v 放入 Map
boolean containsKey(Object key) 
判断是否包含 key
boolean containsValue(Object value)
判断是否包含 value
Set<Map.Entry<K, V>> entrySet()
将所有键值对返回
boolean isEmpty()
判断是否为空
int size()
返回键值对的数量

基本打印方式

基本方式主要有三种:

1.直接打印

        System.out.println(list);

2.for-each打印(一个类只有实现Iterable接口,才能用for-each打印) 

        for(Map.Entry<String,String> entry : map.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }

3.Array

         System.out.println(Arrays.asList());

List、Map、Set的应用场景

List-有序可重复

      ArrayList:底层由数组实现,查询快,增删慢。线程不安全,效率高。

      Vector:底层由数组实现,查询快,增删慢。线程安全,效率底。

      LinkedList:底层由链表实现,查询慢,增删快。线程不安全,效率高。

Set-无序唯一

Map-键值对存储

发布了51 篇原创文章 · 获赞 14 · 访问量 2314

猜你喜欢

转载自blog.csdn.net/qq_41185460/article/details/103447518