HelloWorld开发者社区

www.helloworld.net - 开发者专属的技术社区

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  78 随笔 :: 0 文章 :: 13 评论 :: 49984 阅读

随笔分类 -  数据结构与算法

摘要:作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用。 因为自己本身以前刚学安卓的时候,甚至做安卓2,3年后,也是对 java的 Class不是太清楚,所以想写一篇关于Java Class 的文章,没有那么多专业名词 阅读全文
posted @ 2020-11-28 15:56 HelloWorld开发者社区 阅读(567) 评论(1) 推荐(1) 编辑

摘要:1 折半查找法 了解二叉查找树之前,先来看看折半查找法,也叫二分查找法 在一个有序的整数数组中(假如是从小到大排序的),如果查找某个元素,返回元素的索引。 如下: int[] arr = new int[]{1,3,4,6,8,9}; 在 arr 数组中查找6这个元素,查到返回对应的索引,没有找到就 阅读全文
posted @ 2018-12-27 09:22 HelloWorld开发者社区 阅读(584) 评论(0) 推荐(0) 编辑

摘要:概述 LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少使用算法,核心思想就是当缓存满时,会优先淘汰那些近期最少使用的缓存对象 LruCache的缓存算法 阅读全文
posted @ 2018-12-18 08:57 HelloWorld开发者社区 阅读(567) 评论(4) 推荐(0) 编辑

摘要:Stack是Java中常用的数据结构之一,Stack具有"后进先出(LIFO)"的性质。 只能在一端进行插入或者删除,即压栈与出栈 栈的实现比较简单,性质也简单。可以用一个数组来实现栈结构。 入栈的时候,只在数组尾部插入 出栈的时候,只在数组尾部删除** 我们来看一下Stack的用法 :如下 pub 阅读全文
posted @ 2018-12-10 23:37 HelloWorld开发者社区 阅读(474) 评论(0) 推荐(0) 编辑

摘要:上一节介绍了PriorityQueue的原理,先来简单的回顾一下 PriorityQueue 的原理 以最大堆为例来介绍 PriorityQueue是用一棵完全二叉树实现的。 不但是棵完全二叉树,而且树中的每个根节点都比它的左右两个孩子节点元素大 PriorityQueue底层是用数组来保存这棵完全 阅读全文
posted @ 2018-12-08 11:52 HelloWorld开发者社区 阅读(492) 评论(0) 推荐(0) 编辑

摘要:本章先讲解优先级队列和二叉堆的结构。下一篇代码实现 从一个需求开始 假设有这样一个需求:在一个子线程中,不停的从一个队列中取出一个任务,执行这个任务,直到这个任务处理完毕,再取出下一个任务,再执行。 其实和 Android 的 Handler 机制中的 Looper 不停的从 MessageQueu 阅读全文
posted @ 2018-12-07 10:31 HelloWorld开发者社区 阅读(567) 评论(0) 推荐(1) 编辑

摘要:手写Java HashMap核心源码 上一章手写LinkedList核心源码,本章我们来手写Java HashMap的核心源码。 我们来先了解一下HashMap的原理。HashMap 字面意思 hash + map,map是映射的意思,HashMap就是用hash进行映射的意思。不明白?没关系。我们 阅读全文
posted @ 2018-11-28 08:52 HelloWorld开发者社区 阅读(1546) 评论(6) 推荐(0) 编辑

摘要:上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素。在查找需求比较重要的情况下可以用ArrayList,如果是删除操作比较多的情况下,用ArrayList就不太合适了。Ja 阅读全文
posted @ 2018-11-25 22:44 HelloWorld开发者社区 阅读(465) 评论(0) 推荐(0) 编辑

摘要:手写ArrayList核心源码 ArrayList是Java中常用的数据结构,不光有ArrayList,还有LinkedList,HashMap,LinkedHashMap,HashSet,Queue,PriorityQueue等等,我们将手写这些常用的数据结构的核心源码,用尽量少的代码来揭示核心原 阅读全文
posted @ 2018-11-25 16:38 HelloWorld开发者社区 阅读(438) 评论(0) 推荐(2) 编辑

摘要:快乐数的定义: 快乐数(happy number)有以下的特性: 在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1。 以十进制为例: 2 8 → 2²+8²=68 → 6²+8²=100 → 1²+0²+0²=1 3 2 → 3 阅读全文
posted @ 2018-11-24 16:48 HelloWorld开发者社区 阅读(1576) 评论(0) 推荐(0) 编辑

摘要:1 //递归反向打印字符串 2 void reversePrint(const char *str) 3 { 4 if(str == NULL) 5 return; 6 if(*str == '\0') 7 return; 8 rev... 阅读全文
posted @ 2016-01-22 12:00 HelloWorld开发者社区 阅读(264) 评论(0) 推荐(0) 编辑

摘要:1 //递归求字符串的长度 2 int RecurseLength(const char *str) 3 { 4 if(str == NULL || *str == '\0') 5 return 0; 6 7 if(*str == '\0') 8 return 0... 阅读全文
posted @ 2016-01-22 11:40 HelloWorld开发者社区 阅读(448) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示