java集合类框架

这个博客总结得挺好Java - 集合框架完全解析 - 简书

Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。大概分为两种类型容器:(其中Java集合类里面最基本的接口有:)


一、Collection(集合类):代表一组对象,每一个对象都是它的子元素,存储元素集合。分为:

Set:不包含重复元素的Collection(HashSet不排序、LinkedHashset排序)

List:有顺序的collection,并且可以包含重复元素。(ArrayList数组存储元素,LinkedList链表存储元素)

Queue:队列(先进先出,用LinkedListed创建队列)(PriorityQueue:优先队列,是一个基于优先级堆的无界队列,它的元素是按照自然顺序(natural order)排序的。不是线程安全的,入队和出队的时间复杂度是O(log(n))。


二、Map:图,存储键/值对映射。可以把键(key)映射到值(value)的对象,键不能重复。

Map(HashMap无序,LinkedHashMap按插入或访问顺序 ,TreeMap 按键值排序)


三、其他

1、Vector

2、Stack(栈,继承Vector)

3、HashTable

4、CocurrentHashMap(并发,安全性)

5、CopyOnWriteArrayList(线程安全)


迭代器Iterator :迭代器(Iterator) - CSDN博客

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象。Java中的Iterator功能比较简单,并且只能单向移动:

常用方法:

 (1)iterator():要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) next():获得序列中的下一个元素。

  (3) hasNext():检查序列中是否还有元素。

  (4) remove():将迭代器新返回的元素删除。


使用iterator()方法时经常会遇到ConcurrentModificationException异常

主要原因:当调用容器的iterator()方法返回Iterator对象时,把容器中包含对象的个数赋值给了一个变量expectedModCount,在调用next()方法时会比较变量expectedModCount与容器中实际对象的个数modCount的值是否相等,若二者不相等,则会抛出ConcurrentModificationException异常,因此在使用Iterator遍历容器的过程中,如果对容器进行增加或删除操作,就会改变容器中对象的数量,从而导致抛出异常。

单线程解决办法:在遍历的过程中把需要删除的对象保存到一个集合中,等遍历结束后再调用removeAll()方法来删除,或者使用iterator.remove()方法。

多线程解决方法:

1)在JDK1.5版本引入了线程安全的容器,比如ConcurrentHashMap和CopyOnWriteArrayList等。可以使用这些线程安全的容器来代替非线程安全的容器。

2)在使用迭代器遍历容器时对容器的操作放到synchronized代码块中,但是当引用程序并发程度比较高时,这会严重影响程序的性能。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 一、集合与Map 接口说明 1. Collection接口Collection是最基本的集合接口,一个Collec...
    木有粗面_9602阅读 354评论 0 1
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,362评论 0 4
  • 好多人在感叹 没有情人的情人节好悲催 君不见没有家没有爱的人更惨 还有那些战火中失去一切的孩子 他们的眼神洞穿所有...
    如歌的行板紫雪阅读 285评论 0 3
  • 先吐槽:被论文折磨死啊简直!!!前前后后改来改去的啊啊啊啊啊啊啊啊啊啊啊啊!打印店老板估计也快给我打印烦了哈哈哈哈...
    呼_吸阅读 1,034评论 1 4
  • 让人紧张的地方,内心深处恐慌,不自觉的提醒,自己的安全,通常,会高于常态的敏感。
    滇岛少年阅读 203评论 0 0