原理
ZmyCoder
学习笔记
展开
-
spring.factories文件
在阅读spring-boot相关源码时,常常见到spring.factories文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:“明明自动配置的类已经打上了@Configuration的注解,为什么还要写spring.factories文件?”这个话题需要从@SpringBootApplication注解开始说起。查看@SpringBootApplication源码,我们能看到继承的以下注解:@Target(ElementType.TYPE)@Retent转载 2021-03-03 22:54:47 · 683 阅读 · 1 评论 -
hashSet与treeSet的去重原理
1、TreeSet去重原理 :compareTo可以实现排序及去重:如果compareTo返回0,说明是重复的,返回的是自己的某个属性和另一个对象的某个属性的差值,如果是负数,则往前面排,如果是正数,往后面排;应用:类实现compareable接口,覆写其compareto方法,根据自己的需要改变其排序及去重规则,比如职员类,根据其工资水平进行去重和排序 。2、hashSet去重原理:1,hashCode 2,equals是否相同我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个原创 2020-12-03 18:12:17 · 1706 阅读 · 0 评论 -
hashCode
Object类中的原始hashCode方法如下:public native int hashCode();该方法返回的是对象的内存地址经过处理后的结构。能够做到不同对象的hash值尽量不同,但是有相同的几率。所以在HashSet去重的时候必须重写hashCode方法,否则调用的就是Object类的默认hashCode方法。会导致内容相同的对象,得到的hashCode不同,进而直接存放进Set中,出现重复的情况。...原创 2020-12-03 18:22:30 · 77 阅读 · 0 评论 -
ArrayList扩容
实验代码: public void test01() { ArrayList<String> strings = new ArrayList<>(); for (int i = 0; i < 40; i++) { strings.add(String.valueOf(i + 1)); System.out.println("元素个数为:" + strings.size() + "\t容量为:" +原创 2021-03-10 11:09:35 · 164 阅读 · 1 评论 -
HashMap的get方法时间复杂度
源码:public V get(Object key) { Node<K,V> e; return (e = getNode(hash(key), key)) == null ? null : e.value;}final Node<K,V> getNode(int hash, Object key) { Node<K,V>[] tab; Node<K,V> first, e; int n; K k; if ((tab原创 2021-03-24 11:04:44 · 5166 阅读 · 2 评论 -
JDK1.8----ConcurrentHashMap的put方法源码
public V put(K key, V value) { return putVal(key, value, false); } /** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerExc.原创 2021-03-15 23:33:01 · 277 阅读 · 0 评论