- 博客(16)
- 收藏
- 关注
原创 常见面试题型
Java中的常见关键字:abstract,assert,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,enum,extends,final,finally,float,for,goto,if,implements,import,instanceof,int,interface,long...
2020-04-21 11:02:35
139
原创 TCP和UDP的比较
TCP的优点:可靠,稳定。TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP的缺点:慢,效率低,占用系统资源高,易被攻击。TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接...
2020-04-16 18:40:39
255
原创 数组与List之间的转化
//将数组转化为list String str[] = new String[5]; str[0] = "a"; str[1] = "b"; str[2] = "c"; str[3] = "d"; str[4] = "e"; List<String> list = Arrays.asList(str); //调用asList()方法 list.str...
2019-07-17 20:27:53
166
原创 如何决定使用HashMap还是TreeMap
TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排列的;TreeMap的实现也是基于红黑树结构。而HashMap<K,V>的Key值实现散列hashCode(),分布是散列的均匀的,不支持排序,数据结构主要是桶(数组),链表或红黑树。所以,查询的时候使用HashMap,增加、快速创建...
2019-07-17 20:11:51
6402
2
原创 为什么重写了equals()必须重写hashCode()
当向HashSet中添加元素时,首先调用此元素所在类的hashCode()方法,计算此元素的哈希值,此哈希值决定了此元素在HashSet中存放的位置;若此位置没有被存储元素则直接存储,若已有元素则通过元素所在类的equals()方法比较两个元素是否相同,相同则不能被添加。...
2019-07-17 20:02:12
90
原创 HashSet的实现原理
HashSet是基于HashMap实现的,是一个存放链表的数组。它不保证存储元素的迭代顺序;此类允许使用努力了元素(但最多只能有一个值为null)。HashSet中不允许由重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都是统一的一个固定对象private static final PRESENT = n...
2019-07-17 19:57:48
2841
原创 ConcurrentHashMap数据存储结构以及高效率原因分析
ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap中扮演的角色,HashEntry则用于存储键值对数据。一个ConcurrentHashMap中包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表。一个Segment里面包含一个H...
2019-07-17 19:37:32
1063
原创 ComparaCble和Comparator的不同之处
ComparablCe和ComparatorC都死用于比较数据大小的C,实现Comparable接口需要重写compareTo()方法,实现Comparator接口需要重写compare()方法,这两个方法的返回值都是int,用int类型的值来确定比较结果。...
2019-07-17 19:24:06
138
原创 fail-fast与fail-safe之间的区别
快速失败(fail-fast):在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个modCount变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/ne...
2019-07-17 18:13:20
290
原创 HashMap中为什么Hash的长度为2的幂而&位必须为奇数
从Key映射到HashMap数组的对应位置,会用到一个Hash()函数:index = Hash(“apple”)为了实现一个尽量分布均匀的Hash()函数,我们通过利用Key的HashCode值来做某种运算。index = HashCode(Key) & (Length -1) //Length是HashMap的长度Hash算法最终得到的index结果,完全取决于Ke...
2019-07-16 00:01:52
335
原创 TreeMap和TreeSet在排序时如何比较元素以及Collections工具类中的sort()方法如何比较元素
TreeMap要求存放的键值对映射的键必须实现Comparable接口,从而根据键对元素进行排序。TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTO()方法,当插入元素时会回调该方法比较元素的大小。Collections工具类的sort()方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象必须实现Comparable接口以实...
2019-07-15 23:44:43
236
原创 HashSet和HashMap的区别
HashSet:实现了Set接口,它不允许集合中出现重复的元素。在将对象存储在HashSet之前,要确保重写了hashCode()和eauqls()方法,这样做的目的是比较对象的值是否相等,从而确保集合中没有存储相同的对象。如果不重写上述两个方法,那么将使用public boolean add(Object obj)方法默认实现,在Set中添加元素时,如果元素重复时返回"false",如果添加成功...
2019-07-15 23:33:12
139
原创 HashMap和HashTable的区别和联系
一、区别继承的父类不用HashMap继承自AbstractMap类,而Hashtable继承自Dictionary类。线程安全不同HashMap是线程不安全的,HashTable是线程安全的。是否有同步方法HashMap不是同步的,HashTable是同步的。是否提供contains方法HashMap把HashTable的contains方法去掉了,改成contai...
2019-07-14 00:53:05
90
原创 ArrayList和LinkedList的区别和联系
一、区别ArrayList是实现了基于动态数据的数据结构,LinkedList是基于链表结构实现。对于随机访问的get()和set()方法,ArrayList的效率要高于LinkedList,因为LinkedList要移动指针。对于增加和删除操作的add()和remove()方法,LinkedList效率要高于ArrayList,因为ArrayList要移动数据。二、联系ArrayL...
2019-07-14 00:06:30
1358
原创 List、Set、Collection、Map的区别和联系
Collection:Java.util下的一个接口,是各种集合结构的父接口,List和Set是继承自它的子接口,Collecting是最基本的集合接口,Java SDK中不提供直接继承自Collection的类,而是提供继承自它子接口的类,如List和Set。所用的Collection类都支持一个Iterator()方法来遍历。List:List接口是有序的,会精确的将元素插入到指定的位置(允...
2019-07-13 23:45:41
2774
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人