tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 一些技巧

  • 面试

    • 面试问题集锦
    • Java热点经典问题集锦_1
    • Java中类跟数据相关问题_1
    • Java集合相关问题
      • 集合
        • List、Set、Map的区别是什么?
      • 循环
        • for循环中break与continue以及return的区别
        • Java中的迭代器,iterator,为什么有时候遍历的时候会报NoSuchElementException?
        • Java中Array.sort()方法到底用的什么排序算法?
    • Java并发与异常相关问题
    • Java循环条件判断相关
    • Redis面试题
    • 实际场景问题_1
    • 框架类技术问题集锦-1
    • 开发中遇到的问题_1
    • MySql面试相关
    • Java中业务相关问题
    • 软件测试面试问题
    • 软件测试面试answer
    • Java八股文系列
  • 一些杂货

  • 项目发布

  • 友情链接
  • 更多
  • 面试
EffectTang
2024-03-23
目录

Java集合相关问题

# Java集合相关问题

# 集合

# List、Set、Map的区别是什么?

List:List是一个有序的集合,允许重复的元素,可以通过索引来访问和修改元素。常用的实现类有ArrayList、LinkedList

  • 允许有重复元素,可以插入多个null元素,保持了每个元素的插入顺序,输出的顺序就是插入的顺序
  • 它的查询速度快,但是增删速度慢

Set:Set是一个无序的集合,不允许重复的元素,只能通过迭代器来遍历元素。Set在Java中常见的实现类有HashSet、TreeSet。

  • 它是基于哈希表实现的,集合中不包含重复的元素,它只允许存储一个null元素
  • 并且元素的顺序是不确定的,且非线程安全的。
  • 它的查询效率不如List,但是增删改效率高于List

Map:Map是一种依照键存储元素的容器,在Map中键可以是任意类型的对象。Map中不能有重复的键,每个键都有一个对应的值。一个键(key)和它对应的值构成map集合中的一个元素。当需要保存和查询数据时,可以选择使用Map。常用实现类有以下两个:HashMap和TreeMap。

map的本质上是一个 数组+链表的结构 JDK8之后,当HashMap中的元素数量达到一定的阈值(例如,数组数量大于8,或者哈希表的大小达到64),它会把链表转化为红黑树以提高性能HashMap变成了 数组+链表+红黑树

# 循环

# for循环中break与continue以及return的区别

  • continue:跳过本次循环,不会结束for循环
  • break:结束当前循环,结束for循环
  • return:结束当前循环,同时还会跳出当前函数

# Java中的迭代器,iterator,为什么有时候遍历的时候会报NoSuchElementException?

当我们用while,for对iterator进行遍历的时候,循环完毕,这时的iterator迭代器,会指向最后的元素,这时我们如果再——iterator.next(),就会报NoSuchElementException,这时我们如果希望再次遍历,需要重置我们的迭代器

ArrayList list = new ArrayList();
list.add(5);
list.add(3);
list.add(2);
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println(it.hasNext());// false 表示没有元素了
//System.out.println(it.next());//会抛出异常 NoSuchElementException
it = list.iterator(); //从集合里重新获得迭代器
1
2
3
4
5
6
7
8
9
10
11

注意:在调用it.next()方法之前必须要调用it.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常

# Java中Array.sort()方法到底用的什么排序算法?

Arrays.sort并不是单一的排序,而是插入排序,快速排序,归并排序这三种排序的组合

  • 数量非常小的情况下 (少于47的时候),使用插入排序

  • 数量大于或等于47,少于286的时候,使用快速排序

  • 数量大于286的情况,使用归并排序

上次更新: 2025/04/23, 16:23:16
Java中类跟数据相关问题_1
Java并发与异常相关问题

← Java中类跟数据相关问题_1 Java并发与异常相关问题→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式