八股文第六天

时间: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);
}

集合篇

第二题:常见的数据结构

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

在这里插入图片描述

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

  • 栈是一种基于先进后出(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 能够把它保存的记录根据键排序,默认是键值的升序排序,线程不安全。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皇家小黄

创作不易!!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值