[java面试]之容器(数据结构)

本文主要探讨了Java面试中关于容器(数据结构)的重点,包括常见的Collection接口下的List、Queue、Set,以及Map接口的实现类HashMap和TreeMap。详细介绍了ArrayList、LinkedList、HashSet和HashMap的特性和应用场景,还提到了Collection和Collections的区别,以及如何在特定场景下选择HashMap或TreeMap。此外,还讨论了如何实现数组与List之间的转换,以及迭代器Iterator的使用和特性。
摘要由CSDN通过智能技术生成

java面试之容器篇

1、java常见的容器(数据结构)有哪些?

常见的容器主要有Collection(集合),Map,但是我们常用的String字符串和数组其实也是一种容器,但是该知识点讨论数组和String字符串的意义不大。故不拿出来作比较。

  • Collection:Collection是集合类的顶级接口,继承它的接口主要有List,Queue,Set。
    在这里插入图片描述
    1.1 List:List是Collection的一个接口,是有序队列,值可以重复,存和取的顺序是一致的,有索引。list的实现类是Vector,Stack,Arraylist,Linkedlist。
  • Arraylist(顺序表):底层是数组结构,增删效率低,查询效率高,线程不安全的异步集合,Arraylist内存是连续的。默认初始长度是10,他的有参构造可以指定初始容量。扩容规则:原来的长度+原来长度的一半。
  • Linkedlist(双向链表):底层是链表,查询效率低,增删效率高,线程不安全的异步集合,Linkedlist内存是不连续的。链表不需要初始容量,链表中的每一个元素称之为结点,链表中包含头结点和尾结点,每个结点中都包含的数据有:上一个结点的地址,下一个结点的地址,有节点的pre为null,尾结点的next为null,这就是双向链表。
  • Vector(向量):底层是数组,查询效率高,增删效率低,线程安全。默认初始容量为10,向量增量为0,默认扩容规则为:每次扩容都增加原来的一倍。如果向量增量不为0,那么扩容规则就是:原来容量+向量增量。
  • Stack(栈):栈结构LIFO,先进后出,(Last In First Out)向数据中添加数据:入栈/压栈,由栈顶向栈底添加。从栈中取出数据:出栈/弹栈,由栈底向栈顶取出。
    在这里插入图片描述
    1.2Queue(队列):先进先出(FIF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值