数据结构中遇见的问题~

常见的八大排序

  • 插入排序
    • 直接插入排序时间复杂度O(n2)
      • 时间复杂度O(n2)
      • 空间复杂度O(1)
    • 希尔排序
      • 时间复杂度O(n1.3)
      • 空间复杂度O(1)
  • 选择排序
    • 直接选择排序
      • 时间复杂度O(n2)
      • 空间复杂度O(1)
    • 堆排序
      • 时间复杂度O(nlog2n)
      • 空间复杂度O(1)
  • 交换排序
    • 冒泡排序
      • 时间复杂度O(n2)
      • 空间复杂度O(1)
    • 快速排序
      • 时间复杂度O(nlog2n)
      • 空间复杂度O(nlog2n)
  • 归并排序
    • 时间复杂度O(nlog2n)
    • 空间复杂度O(1)
  • 基数排序
    • 时间复杂度O(d(r+n))
    • 空间复杂度O(rd +n)

Jvm内存中各区存放内容

  1. 寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
  2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
  3. 堆:存放所有new出来的对象。
  4. 静态域:存放静态成员(static定义的)
  5. 常量池:存放字符串常量和基本类型常量(public static final)。
  6. 非RAM存储:硬盘等永久存储空间

遍历一个list有哪几种方式

  1. for循环遍历,
  2. iterator迭代器遍历,
  3. foreach遍历

Java中list、set、map集合的区别

List(列表)

  • List的元素以线性方式存储,可以存放重复对象,List主要有以下两个实现类:
    • ArrayList:长度可变的数组,可以对元素进行随机的访问,向ArrayList中插入与删除元素的速度慢。
    • LinkedList:采用链表数据结构,插入和删除速度快,但访问速度慢。

Set(集合)

  • Set中的对象不按特定(HashCode)的方式排序,并且没有重复对象,Set主要有以下两个实现类:
    • HashSet:HashSet按照哈希算法来存取集合中的对象,存取速度比较快。当HashSet中的元素个数超过数组大小*loadFactor(默认值为0.75)时,就会进行近似两倍扩容。
    • TreeSet:TreeSet实现了SortedSet接口,能够对集合中的对象进行排序。

Map(映射)

  • Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一个键对象和值对象。 Map主要有以下两个实现类:
    • HashMap:HashMap基于散列表实现,其插入和查询<K,V>的开销是固定的,可以通过构造器设置容量和负载因子来调整容器的性能。
    • LinkedHashMap:类似于HashMap,但是迭代遍历它时,取得<K,V>的顺序是其插入次序,或者是最近最少使用(LRU)的次序。
    • TreeMap:TreeMap基于红黑树实现。查看<K,V>时,它们会被排序。TreeMap是唯一的带有subMap()方法的Map,subMap()可以返回一个子树。

这三者的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值