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 值也应该相同。
- Map下有:
HashMap:线程不安全 效率高 K V都允许Null, K不允许重复
HashTable:线程安全(synchronized)效率低 不允许Null 打死都不用
LinkedHashMap:有序
TreeMap:有序
JVM
Java 内存模型,方法区,堆,栈交互模型
堆内存模型