刷leetcode总结一下java的一些基础知识,,,,总是忘
String字符串知识汇总
Integer.valueOf("a")
// 求该字符的ASCII值- charAt() 返回指定位置的字符 如
String s = 'abcd' s.charAt(2) = "c"
int + charAt()
结果为整数 (ASCII值)
HashSet与HashMap的区别:
- HashMap实现了Map接口, 是 Key-Value 型的,Key 不可以重复,Value可以重复。HashMap非线程安全,要想实现线程安全,那么需要调用collections类的静态方法synchronizeMap()实现。
- HashSet实现了Set接口,不允许出现重复元素。
HashMap | HashSet |
---|---|
实现了Map接口 | 实现Set接口 |
存储键值对 | 仅存储对象 |
调用put()向map中添加元素 | 调用add()方法向Set中添加元素 |
HashMap使用键(Key)计算Hashcode | HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false |
HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 | HashSet较HashMap来说比较慢 |
hashcode
hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。
hashCode的存在是为了查找的快捷性。
hashCode和equals比较
equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。
hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。
若重写了equals(Object obj)方法,则有必要重写hashCode()方法。
参考:https://blog.csdn.net/haobaworenle/article/details/53819838
set、map、list的比较
- set中不包含重复的元素无需集合。允许有一个为null。
- list允许重复项的有序集合。
- Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
- List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。
- ArrayXxx:底层数据结构是数组,查询快,增删慢
- LinkedXxx:底层数据结构是链表,查询慢,增删快
- HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
- TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序
参考: https://www.cnblogs.com/jing99/p/6947549.html
https://blog.csdn.net/qq_34149805/article/details/68943004
更新ing