
算法
一起学习算法知识
咸鱼阿伟
这个作者很懒,什么都没留下…
展开
-
HashMap邻居:ConcurrentHashMap
HashMap在进入今天的主题之前先来讲讲大家都熟知的HashMap类:HashMap是集合中的一个重要的类,继承自Map接口,Map和其他集合最大的不同点就在于它是以键值对的形式储存数据,HashMap在开发中一个很致命的问题在于它的线程不安全性,在多线程下进行put()方法时有可能造成链表的闭环,从而形成死循环,然后就需要找寻线程安全的类。HashTable接下来看一下HashTable类,它是线程安全的,而它的线程安全操作是在所有涉及到多线程操作的地方都加上了synchronized关键字将整原创 2020-08-27 20:21:59 · 169 阅读 · 0 评论 -
字符串也过七夕?KMP算法帮助字符串找到ta的另一半!
七夕来临,不知巧合还是咋地,突然在LeetCode刷到不少字符串匹配的题目,本来抱着大力出奇迹心理的我一直以来都是暴力破万法,不料也卡在了时间复杂度上,于是拾起了久久不用的kmp算法。字符串匹配先来看一个场景:现在有两个字符串,S1和S2,现在想知道S1中是否有S2。如何判断?当然,最先肯定会想到的是indexOf()函数,亦或是正则表达式。然而,当需要我们自己编写算法时,也不能傻了眼,接下来认识一下几种编写匹配算法的方式:1、暴力搜索简单易懂的算法算法描述:在原字符串搜索模式串,当发现无法匹原创 2020-08-28 14:21:02 · 191 阅读 · 0 评论 -
知其然,知其所以然——ArrayList.add()详解
学数学的呢,有一个通病,好听点呢,就是想搞懂一切东西,当然,我们一般称其为:钻牛角尖,今天,我就想钻一钻ArrayList这一集合类的牛角尖ArrayList概述 ArrayList就是一个存放数据的集合类,可以看到API中的解释为:List接口的可调整大小的阵列实现。我们经常也能在LeetCode下刷到关于ArrayList的题目,接下来,我们就来看看这个类的真面目吧类间关系 ArrayList类继承了AbstractList类,AbstractList又继承于AbstractCollection类原创 2020-08-22 20:34:56 · 7993 阅读 · 0 评论 -
神奇的线程池——妈妈再也不用担心线程的创建销毁太花时间啦
线程池什么是线程池线程池(ThreadPool),听起来就非常的有意思哈。乍一看还以为是将线程放在一个池子中,其实啊,还真是这样,也可以简单的理解为一个可以容纳多个线程的容器。那么,线程池有啥用呢,和线程相比又有什么特别点呢线程池的的优势Java中使用线程的话,除了处理用户的请求之外,时间花的最多的地方就在于创建和销毁线程。而对于线程来说,这两个操作又是必须要做的,而用线程池来代替的话,将线程用线程池来储存着,用到的时候既不用进行创建线程,也不用在结束使用后进行销毁,大大地提高了时间效率。而且另原创 2020-08-25 10:49:33 · 305 阅读 · 0 评论 -
主要排序算法
排序算法基本概念:时间复杂度:对数据操作次数的数量级空间复杂度:算法所需额外空间的数量级稳定性:将数据进行排序之后,相同数据的相对位置不发生改变分类:比较类排序和非比较类排序比较类算法:通过元素间的两两比较进行排序的算法冒泡排序:最简单的排序算法,进行n轮重复遍历,每一轮进行n次比较选出元素的一个最大/最小值,将剩下元素继续排序,直到剩下一个元素。时间复杂度:O(n2) ,空间复杂度:O(1),算法稳定性:稳定代码: public static void bubble(int[]原创 2020-08-14 20:25:05 · 176 阅读 · 0 评论