五. Java集合概要
了解了Java内存相关的内容后,现在来简单介绍下Java的集合。

Set:不含有重复数据的集合。常用的对象HashSet,TreeSet,LinkedHashSet。HashSet拥有很好的性能,其数据是无序的。TreeSet的结构为红黑树,所以其数据是有序的,但不允许含有null。LinkedHashSet保持数据的插入顺序。
List:Java中常用的集合。常用的对象ArrayList,LinkedList,Vector。ArrayList多用于容量已知、随机读较多的场景。LinkedList多用于未知容量,随机写较多的场景。Vector是线程安全的。
Queue:多用于对数据进行FIFO(先进先出)队列的管理。常用的对象SynchronousQueue,LinkedBlockingQueue,DelayQueue。 SynchronousQueue是一个无容量的阻塞队列,每个插入操作必须等待其他线程的remove操作,反之亦然,它适合于handoff designs。DelayQueue一个元素在延迟一定时间后才被取出的阻塞队列。LinkedBlockingQueue常用的阻塞队列。
Deque:用于对数据进行FIFO(先进先出),LIFO(后进先出)双队列的管理。
Map:Java常用key/value数据结构。常用的对象ConcurrentHashMap, HashMap, Hashtable, LinkedHashMap, TreeMap。Hashtable可以说已被替换。ConcurrentHashMap用于线程安全的场景。LinkedHashMap保留了数据的插入顺序。TreeMap的key是有序的。
使用集合的经验:
- 容量确定时,一定初始化好起容量,这样可以避免集合的自动扩容。
- 注意集合的上限,一个是java本身int类型的限制,一个是jvm内存的限制。
- 集合线程安全针对的是集合结构变化时(add,delete,remove,put,resize操作),操作结果要符合预期。
- Jdk 1.8已经支持collection集合的聚集和并行操作(Aggregate Operations and Parallel).类似spark的RDD.这块很有意思,建议大家去看看。
关于集合的自动扩容算法等源码,网上以比比皆是,So,露巧不如藏拙。
五. Java集合概要的更多相关文章
- Java中的函数式编程(五)Java集合框架中的高阶函数
写在前面 随着Java 8引入了函数式接口和lambda表达式,Java 8中的集合框架(Java Collections Framework, JCF)也增加相应的接口以适应函数式编程. 本文的 ...
- 五、Java - 集合
一.集合 Java 中的集合类存放于 java.util 包中,是一个存放对象的容器. 集合存放的是对对象的引用,对象本身还是存在于 JVM 堆内存中. 存放的是对象,即引用数据类型,对于基本数据类型 ...
- 【由浅入深理解java集合】(五)——集合 Map
前面已经介绍完了Collection接口下的集合实现类,今天我们来介绍Map接口下的两个重要的集合实现类HashMap,TreeMap.关于Map的一些通用介绍,可以参考第一篇文章.由于Map与Lis ...
- 我的Java之旅 第五课 JAVA 语言语法 集合
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型,int 可以用 Integer代替. 一.集合接口 1. Iterable<E> 实现这个接口允许对象成为 "fo ...
- Java集合框架(Java总结五)
”https://www.runoob.com/java/” 集合接口区别 List 接口存储一组不唯一,有序(插入顺序)的对象,允许有相同的元素. Set 接口存储一组唯一,无序的对象,不保存重复的 ...
- Java 集合系列 12 TreeMap
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
- Java 集合框架
Java集合框架大致可以分为五个部分:List列表,Set集合.Map映射.迭代器.工具类 List 接口通常表示一个列表(数组.队列.链表 栈),其中的元素 可以重复 的是:ArrayList 和L ...
- Java集合---Array类源码解析
Java集合---Array类源码解析 ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Prim ...
随机推荐
- python学习-面向对象
面向对象 编程方式的区别 过程式编程 函数式编程 面向对象式编程 面向对象编程 对象是类的一个实例 创建 class foo(): def __init__(self): #类的构造方法 pass d ...
- php调用java
PHP调用JAVA方式 1. 背景 在开发招商银行信用卡分期付款功能过程中,在支付成功之后需要对银行的返回数据进行签名验证,因签名加密方式招商银行是不提供的,只提供了相应的JAVA验证类测试例 ...
- Ubuntu发行版升级
从UK 13.10升级到UK 14.10 方法一: 1.sudo apt-get update 2.sudo update-manager -c -d 3.选择upgrade(升级) 方法二 ...
- VisualSVN 5.1.7破译License Key
前面手敲一些简要的软件说明:visualSVN server大家都不陌生,服务器上的版本控制系统,一般配套Tortoisesvn(小乌龟)使用.本次介绍的这个visualsvn属于VisualStud ...
- 使用Spring mvc接收整个url地址及参数时注意事项
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
- svg制作风车旋转
首先用ai画一个简单的风车 例如: svg代码: <animateTransform attributeName="transform" begin="0s&quo ...
- ecshop中smarty比较操作符(eq,ne,neq)含义
eq相等, ne.neq不相等, gt大于, lt小于, gte.ge大于等于, lte.le 小于等于, not非, mod求模. is [not] div by是否能被某数整除, is [not ...
- Ajax 向后台提交一个 JavaScript 对象数组?
var postArray= new Array(); var temp = new Object(); temp.id='1'; temp.name='test'; postArray.push(t ...
- VB6之摄像头控制
参考文献:http://www.cnblogs.com/xidongs/archive////.html 直接上代码: 'code by lichmama from cnblogs.com '@vb6 ...
- 利用workbench将excel数据导入到MySQL中
数据导入的方式(csv,txt之类) 在MySQL中,数据导入的方式有两种方式 通过第三方客户端导入(workbench) 通过mysql client 方式导入 通过mysql clinet的导入方 ...