java基础

刷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

-------------The End-------------