
#java数据结构
养生编程大队长
养生编程,你值得拥有,妈妈再也不用担心我的头发
展开
-
HashMap
HashMap学习:链表数组,初始长度16,扩容因子0.75,代表每次容量为0.75的时候,就扩容为当前长度的2倍。同时实现了equals方法和hashcode方法,可以规避相同的K值存储一个,否则会放置多个。key可以为null。线程不安全,某些情况下会造成死锁静态内部类:定义了一个entry类,用来保存键值对,同时next用来指向下一个entry,表示是一个链表...原创 2019-09-15 14:03:48 · 114 阅读 · 0 评论 -
LinkedList
LinkedList,操作对象是双向链表。每次插入新的数据的时候,head的previous节点指向最新 的节点。双向链表时间复杂度:新增的时候是O(1),删除的时候需要遍历指定的元素O(N),获取第一个和最后一个元素是O(1);获取指定的元素是O(N)在链表中查找第n个数据以及查找指定的数据的时间复杂度是O(N),但是插入和删除数据的时间复杂度是O(1),因为只需要调整指针就...原创 2019-09-15 14:05:26 · 113 阅读 · 0 评论 -
ArrayList,arrayList
ArrayList,arrayList,原理数组,使用泛型数组的方式。默认初始容量是16,当前元素放满数组的时候就去扩容,每次扩容为原来长度的1.5倍+1。因为是数组的原因可以放置重复的元素。线程不安全,因为是对于类里面的私有变量的写操作。时间复杂度:对于特定的元素的读取时O(1),知道index的话。对于某一个元素读取下标位置的话,是O(N),需要遍历数组。插入数据时,不指定下标的话...原创 2019-09-15 14:22:41 · 282 阅读 · 0 评论 -
TreeSet
TreeSet,操作的对象是TreeMap,但是对于Map的value都是同一个对象,类似HashSet默认构造函数add方法实际上是TreeMap的put方法,只不过对于树的每个节点的value都是同一个对象,即是相等的。静态常量...原创 2019-09-15 14:23:25 · 164 阅读 · 0 评论 -
TreeMap
TreeMap,原理是红黑树,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。操作是是一个entry节点,hashMap操作的是entry数组。线程不安全put方法:插入之后会修正颜色和节点位置,通过左旋和右旋左旋和右旋...原创 2019-09-15 14:24:05 · 144 阅读 · 0 评论 -
HashSet
HashSet,原理类里面操作的是HashMap,同时Hash的key是HashMap的key,value是HashSet里面的私有常成员变量。意味着,hashset放置不同的元素实际上是把这个元素放置在了map的key位置,不同的key对应的value是一样的。线程不安全value是静态常成员变量,意味值所有的HashSet实例的value是同一个值add方法,实际上是对hashma...原创 2019-09-21 07:06:34 · 311 阅读 · 0 评论 -
threadlocal用法
ThreadLocal,实例用法,ThreadLocal创建一个当前线程控制的变量,实际上类似map的用法,只不过只能存放一个value,同时这个变量的key是他自己,this。value的类型是泛型。保存值用的方法是set(value),获取value方法是get();每个线程有一个ThreadLocalMap属性,他将会把ThreaLocal的指针this,当key,将ThreaLocal s...原创 2019-09-21 07:08:55 · 238 阅读 · 0 评论