Java基础知识

String StringBuffer与StringBulider的区别

  • 执行速度

    StringBuilder > StringBuffer > String

当我们对一个String字符串进行频繁的增删改时,虚拟机会频繁的在常量池里面寻找和创建字符串,影响速度,使用StringBuilder或者StringBuffer则保证只有一个对象,虚拟机不会创建额外的对象.

  • 线程安全

    StringBuilder是线程不安全的,而StringBuffer是线程安全的

总结

  • String:适用于少量的字符串操作的情况
  • StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
  • StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

集合List、Set、Map

  • Set:无序、不可重复
    • HashSet:底层数据结构是哈希表(无序唯一),hashCode()和equals()保证元素唯一性
    • LinkedHashSet:底层数据结构是链表(有序)和哈希表(唯一)。(FIFO插入有序,唯一)
    • TreeSet:底层数据结构是红黑树。(唯一,有序)(自然排序、比较器排序、根据比较的返回值是否为0来保证元素的唯一性)
  • List:有序可重复
    • ArrayList:底层数据结构是数组,查询快,增删慢.线程不安全,效率高。
    • Vector:底层数据结构是数组,查询快,增删慢。线程安全,效率低
    • LinkedList:底层数据结构是链表,查询慢,增删快。线程不安全,效率高
  • Queue:队列集合
  • Map:映射关系的集合
    • TreeMap:有序
    • HashTable:无序;线程安全,效率低;不允许null
    • HashMap:无序,不是线程安全,效率高;key和value都允许null

      Collection集合使用原则

      唯一 -> set ->排序->TreeSet或LinkedHashSet(不排序:HashSet)
      不唯一 -> List ->安全 -> Vector(不安全:ArrayList或者LinkedList)

图片说明

图片说明

全部评论

相关推荐

MomonKa:我拿Java简历投了pdd前端也给我简历过筛了
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务