Fork me on GitHub

BiuBiu

记录、学习、生活

0%

Java基础(一)

Java是一门面向对象的高级编程语言,本篇说基础

Java集合

Java集合类存放于 java.util 包中,是一个用来存放对象的容器。

介绍

本文内容参考自返回主页YSOcean Java 集合详解

集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型
集合存放的是多个对象的引用,对象本身还是放在堆内存中
集合可以存放不同类型,不限数量的数据类型。

两大类

  • Map:键值对

  • Collection:单值

    • List
    • Set
  • List下最常用的集合:有序,可重复
    ArrayList:底层数据结构是数组,查询快,增删慢 线程不安全,效率高
    LinkedList:底层数据结构是链表,查询慢,增删快 线程不安全,效率高
    Vector:底层数据结构是数组,查询快,增删慢 线程安全,效率低

  • Set下最常用的集合:无序,唯一
    HashSet:底层数据结构是哈希表 无序,唯一 如何来保证元素唯一性? 如何来保证元素唯一性? 依赖两个方法:hashCode()和equals()
    TreeSet:底层数据结构是红黑树。(唯一,有序) 如何保证元素排序的呢? 自然排序 比较器排序
    LinkedHashSet:底层数据结构是链表和哈希表 (FIFO插入有序,唯一) 由链表保证元素有序 由哈希表保证元素唯一

TreeSet的主要功能用于排序
LinkedHashSet的主要功能用于保证FIFO即有序的集合(先进先出)
HashSet只是通用的存储数据的集合

注意:
每一个存储到 哈希 表中的对象,都得提供 hashCode() 和 equals() 方法的实现,用来判断是否是同一个对象
对于 HashSet 集合,我们要保证如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。

hg42LQ.md.png

  • Map下有:
    HashMap:线程不安全 效率高 K V都允许Null, K不允许重复
    HashTable:线程安全(synchronized)效率低 不允许Null 打死都不用
    LinkedHashMap:有序
    TreeMap:有序

JVM

Java 内存模型,方法区,堆,栈交互模型

h2GVhV.md.png

堆内存模型

h2ahbF.md.png

老铁,想请我喝哇哈哈嘛!![笑哭]