![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和数据结构
西北地的风
java开发者,产品爱好者,旅游粉,APP开发和设计者
展开
-
雪花算法(snowflake)优化
分布式环境雪花算法的优化原创 2022-12-15 17:28:02 · 586 阅读 · 1 评论 -
字典排序
原创 2015-04-17 22:04:13 · 110 阅读 · 0 评论 -
ArrayList源码解析
原创 2014-05-18 23:33:34 · 76 阅读 · 0 评论 -
LinkedList源码解析
每个元素,故适用于频繁添加和删除元素,查找元素较少的场合。 LinkedList中的数据结构用例和HashMap中一样,存放的是模拟实体Entry对象。定义头部指针private transient Entry<E> header = new Entry<E>(null, null, null); 头部指针header相当于LinkedList中的初始坐标,header的next指向第一个Entry元素。有了header,才原创 2014-05-18 03:03:07 · 84 阅读 · 0 评论 -
HashMap的进一步理解
链表和数组的区别见:http://geeksun.iteye.com/blog/1709418Entry(Key,value,next) 2. Entry链表实际上HashMap存放的对象是Entry对象,Entry相当于HashMap中的实体,Entry有key,value,hash,next属性,key和value都保存在Entry里 final K key; V value; Entry<K,V> nex原创 2014-05-13 22:49:39 · 70 阅读 · 0 评论 -
算法复杂度
原创 2012-11-01 13:59:18 · 177 阅读 · 0 评论 -
链表和数组
复杂度为O(1),链表利用引用定位元素时间复杂度O(n); 5. 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度 O(1)。总结: 如果是数据数量不发生变化,就使用数组;如果数据数量经常发生变化,就使用动态数组(ArrayList、vector)或双向链表LinkedList;如果查询多,而插入删除少,使用ArrayList,如果查询少,而插入删除操作多,则使用LinkedList。原创 2012-10-31 11:40:54 · 67 阅读 · 0 评论 -
生产者和消费者模式
原创 2012-10-30 15:33:45 · 88 阅读 · 0 评论 -
快速排序
public class QuickSort{ /** * @param data 要排序的数组 * @param left 左边数组下标 * @param right 右边数组下标 */ static void quickSort(int[] data, int left, int right){ if(left<right){ // 一趟排序算法, 返回枢钮位置 int pivot = partition(data, left,原创 2012-10-07 23:46:11 · 73 阅读 · 0 评论 -
二分查找法
原创 2012-09-26 22:52:35 · 103 阅读 · 0 评论 -
求100以内的素数
if(i%j==0){ break; } } if(i<=j){ System.out.println(i); } } } 解决方案二: public static void getPrimeNumber(){ List<Integer> list = new ArrayList<Integer>();; for(int i=2;i<原创 2010-09-19 17:39:34 · 80 阅读 · 0 评论 -
哈希(hash)算法
原创 2009-11-09 19:00:29 · 115 阅读 · 0 评论 -
HashMap解析
2009-10-27 19:14:20 · 73 阅读 · 0 评论 -
HashSet解析
元素。 HashSet为基本操作提供了稳定的性能,这些操作包括add(),remove(),contains()和size(),假定hash函数已经将这些元素正确地分布在桶中。对集合进行迭代所需的时间与与HashSet实例的大小(元素的数量)和底层HashMap的实例的“容量”的和成正比。因此,如果HashSet迭代的性能很重要,财不要将初始容量设置得太高(或将加载因子设置得太低)。在生成HashSet对象时可以设置初始容量,如Set hset = new HashSet(10,0.2009-10-26 18:48:37 · 89 阅读 · 0 评论 -
位移运算
and”之意。例如:int i = 2 & 3;boolean l = false & true; //&: 位运算符System.out.println(i);System.out.println(l);boolean j = false && false; //&&: 逻辑运算符, 短路运算符, System.out.println(j);输出:2fal2009-05-06 11:14:07 · 76 阅读 · 0 评论