• 八股文第六天


    时间:2022年7月26日

    第一题:冒泡排序

    冒泡排序算法的原理如下:

    1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

    2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

    3.针对所有的元素重复以上的步骤,除了最后一个。

    4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

    @Test
       public void test4(){
        Scanner scanner = new Scanner(System.in);
        int[] ints = new int[5];
        int temp;
        System.out.println("请输入5个数");
        for (int i = 0; i < 5; i++) {
            ints[i]= scanner.nextInt();
        }
        for (int i = 0; i < ints.length; i++) {
            for (int j = 0; j < ints.length-1; j++) {
                if (ints[j]>ints[j+1]){
                    temp=ints[j];
                    ints[j]=ints[j+1];
                    ints[j+1]=temp;
                }
            }
        }
        System.out.println("排序后的结果为:");
        Arrays.stream(ints).forEach(System.out::println);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    集合篇

    第二题:常见的数据结构

    数组,栈,队列,链表,树,散列,堆,图等

    在这里插入图片描述

    • 数组是最常用的数据结构,数组的特点是长度固定,数组的大小固定后就无法扩容了 , 数组只能存储一种类型的数据 ,添加,删除的操作慢,因为要移动其他的元素。

    • 栈是一种基于先进后出(FILO)的数据结构,是一种只能在一端进行插入和删除作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据 在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

    • 队列是一种基于先进先出(FIFO)的数据结构,是一种只能在一端进行插入,在另 一端进行删除操作的特殊线性表,它按照先进先出的原则存储数据,先进入的数据,在读取 数据时先被读取出来。

    • 链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只表示数 据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

    • 链表由一系 列的结节(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成。根据指针的 指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

    • 树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述 现实生活中的很多事物,例如家谱、单位的组织架构等等。有二叉树、平衡树、红黑树、B 树、B+树。

    • 散列表,也叫哈希表,是根据关键码和值 (key 和 value) 直接进行访问的数据结构, 通过 key 和 value 来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。

    • 堆是计算机学科中一类特殊的数据结构的统称,堆通常可以被看作是一棵完全二叉 树的数组对象。 图的定义:图是由一组顶点和一组能够将两个顶点相连的边组成的

    第三题:集合和数组的区别(了解)

    区别:数组长度固定 集合长度可变 数组中存储的是同一种数据类型的元素,可以存储基本数据类型,也可以存储引用数据类型;
    集合存储的都是对象,而且对象的数据类型可以不一致。在开发当中一般当对象较多的时候, 使用集合来存储对象。

    第四题:List 和 Map、Set 的区别(必会)

    List 和 Set 是存储单列数据的集合,Map 是存储键值对这样的双列数据的集合;

    • List 中存储的数据是有顺序的,并且值允许重复;
    • Map 中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;
    • Set 中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素 的 hashcode 决定,即位置是固定的(Set 集合是根据 hashcode 来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说 set 中的元素还是无序的)

    第五题:List 和 Map、Set 的实现类(必会)

    1)Collection是Java提供的集合接口,存储一组不唯一,无序的对象。它有两个子接口List和Set。
    2)Java中还有一个Collections类,专门用来操作集合类 ,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 收起 在这里插入图片描述
    1)Collection是Java提供的集合接口,存储一组不唯一,无序的对象。它有两个子接口List和Set。
    2)Java中还有一个Collections类,专门用来操作集合类 ,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

    Connection 接口:

    List 有序, 可重复

    ArrayList 优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程不安全,效率高

    Vector 优点: 底层数据结构是数组,查询快,增删慢。
    缺点: 线程安全,效率低, 已给舍弃了

    LinkedList 优点: 底层数据结构是链表,查询慢,增删快。
    缺点: 线程不安全,效率高

    Set 无序,唯一

    HashSet 底层数据结构是哈希表。(无序,唯一)

    如何来保证元素唯一性?
    依赖两个方法:hashCode()和 equals()

    LinkedHashSet 底层数据结构是链表和哈希表。(FIFO 插入有序,唯一)
    1.由链表保证元素有序
    2.由哈希表保证元素唯一

    TreeSet 底层数据结构是红黑树。(唯一,有序)

    1. 如何保证元素排序的呢?
      自然排序 比较器排序
    2. 如何保证元素唯一性的呢?
      根据比较的返回值是否是 0 来决定

    Map 接口有四个实现类:

    • HashMap 基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键, 线程不安全。

    • HashTable 线程安全,低效,不支持 null 值和 null 键;

    • LinkedHashMap 线程不安全,是 HashMap 的一个子类,保存了记录的插入顺序;

    • TreeMap 能够把它保存的记录根据键排序,默认是键值的升序排序,线程不安全。

  • 相关阅读:
    8. sqoop-1.4.7安装部署
    【节能学院】Acrel5000web能耗系统在某学院的应用
    安卓毕业设计app项目源码基于Uniapp实现的美食餐厅订餐点餐
    【无标题】
    GD32F4(10):GD32转RS422在115200下接收乱码分析
    【解决问题】笔记本换硬盘 BIOS 不能识别
    用代码构建UI界面
    SE(Squeeze and Excitation)模块的理解以及代码实现
    OOTD | 美式复古穿搭耳机,复古轻便的头戴式耳机推荐
    git如何把test分支做好的功能 文件和文件夹复制到master
  • 原文地址:https://blog.csdn.net/weixin_44233087/article/details/126004125