标签:set eset 为什么 treemap 语言 容器 排序 哈希表 hashset
我们都知道java是面向对象的语言,数据多了放对象里,那么对象多了放哪里呢?集合或者数组中那么集合和数组有什么区别呢?
数组一旦初始化长度是固定的 ,集合的长度是可变的
数组只能存储一种类型的对象和基本数据,集合能存储多种不同类型的对象
在平常开发张最常用的集合体系有三种一个是List(ArrayList LinkedList vector) 还有一个set(HashSet TreeSet) 和 map(HashTable HashMap TreeMap)
那么为什么集合体系要分这么多的种类呢?
因为每个容器底层对数据的存储方式不同,也就是数据结构(数据在内存中的构成情况)
List:有序,可以重复,因为该集合体系有索引
set:无序,不可重复,无索引
map:存储键值对,键是唯一的
ArrayList:底层数据结构是数组,jdk1.2出来的,不同步的
LinkedList:底层数据结构是链表
Vector:底层数据结构是数组,jdk1.1出来的,同步
HashSet:底层数据结构是哈希表
TreeSet:底层数据结构是二叉树
HashTable:底层数据结构是哈希表,不可以存入null键null值,线程同步,jdk1.0出来的
HashMap:底层数据结构是哈希表,可以存入null键null值,jdk1.2出来的
TreeMap:底层数据结构是二叉树,线程不同步,可以给map集合中的key排序,set集合的底层是map(map去掉值之后就是set,详情见java源代码)
标签:set eset 为什么 treemap 语言 容器 排序 哈希表 hashset
原文地址:http://blog.51cto.com/13579086/2067652