栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java集合框架的一些小知识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java集合框架的一些小知识

目录

一、List和ArraysList

二、Queue和Deque

三、ArrayList和LinkList的区别与联系

四、其他相关知识


一、List和ArraysList

List是一个接口,而ArrayList是List接口的一个实现类。

       ArrayList类继承并实现了List接口。 
 因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。

List res = new ArrayList(); 

 

List a=new ArrayList();

则a拥有List的所有属性和方法,不会拥有其实现类ArrayList的独有的属性和方法。

a只能调用类ArrayList中重写List类的抽象方法

如果List与ArrayList中有相同的属性(如int i),有相同的方法(如void f()),

则a.i是调用了List中的i,成员变量不会被重写

a.f()是调用了ArrayList中的f();——因为list中的成员方法f()在ArraysList中进行了重写


 

二、Queue和Deque

Queue和Deque是接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口

Queue q = new LinkedList<>()

Deque stack = new LinkedList();


 

三、ArrayList和LinkList的区别与联系

List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法
ArrayList:实现了List接口,底层为动态类型顺序表
LinkedList:实现了List接口,底层为双向链表
 

1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。

2. 对于随机访问,ArrayList优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问。而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)

3. 对于插入和删除操作,LinkedList优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引。

4. LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。


 

四、其他相关知识

 上一张图总结一些

 

一些简单的解释和说明 

  • 1. Collection:是一个接口,包含了大部分容器常用的一些方法
  • 2. List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法
  •     ArrayList:实现了List接口,底层为动态类型顺序表
  •     LinkedList:实现了List接口,底层为双向链表
  • 3. Stack:底层是栈,栈是一种特殊的顺序表
  • 4. Queue:底层是队列,队列是一种特殊的顺序表
  •     Deque:是一个接口
  • 5. Set:集合,是一个接口,里面放置的是K模型
  •     HashSet:底层为哈希桶,查询的时间复杂度为O(1)
  •     TreeSet:底层为红黑树,查询的时间复杂度为O( ),关于key有序的
  • 6. Map:映射,里面存储的是K-V模型的键值对
  •     HashMap:底层为哈希桶,查询时间复杂度为O(1)
  •     TreeMap:底层为红黑树,查询的时间复杂度为O( ),关于key有序

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号