Java集合类的使用

集合框架有何好处

集合弥补了数组的缺陷,他比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合可使用与不同场合

数组和集合的区别

数组长度固定,集合长度可以动态改变

定义数组时必须指定元素类型,集合默认所有元素都是Object

无法直接获取数组中实际元素的个数,集合可以通过size()直接获取元素个数

集合有多种实现方式和不同的适合场合,而不像数组仅采用分配连续空间方式。

集合以接口,类的形式存在,具有面向对象的三大特征,提高了软件的开发效率

Hashtable和HashMap的异同

实现原理、功能相同,可以互用

主要区别

Hashtable继承Dictionary类,HashMap实现Map接口

Hashtable线程安全,HashMap线程非安全

Hashtable不允许null值,HashMap允许null值

泛型集合的好处

严格限制存入元素的数据类型,从集合中取出元素时无需进行强制类型转换,避免了ClassCastException异常。

Collections算法类

Collections和Collection不同,前者是集合的操作类,后者是集合接口

Collections提供的常用静态方法

sort():排序

binarySearch():查找

max()\min():查找最大\最小值

集合类有哪些

Collection(接口)(由List和Set两部分组成)

List(接口)

LinkedList(类)

ArrayList(类)

Vector(类)

stack(类)

Set接口

Map接口

Hashtable(类)

HashMap(类)

WeakHashMap(类)

如何使用集合类

如果涉及到堆栈、队列等操作,应当考虑List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList

哈希表的操作,作为Key的对象要正确复写equals和hashCode方法

尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果将来要将ArrayList换成LinkedList时,客户端代码不用改变

List可以有类似数组的下标操作,且允许有相同的元素存在;Map是以键值对(KeyValue)的形式存在,不能存在相同的键

常用集合类

ArrayList类:

ArrayList实现可变大小的数组,长度随着元素的增加而变化,而且可以存在重复的元素

HashMap类:

允许null,即null key,null value。且存在的形式是key-value形式,不允许有key重复

Collection的使用

Collection接口是什么

Collection接口是可以理解成动态的数组、集合,和数组类似,但不同的是集合可以任意扩充大小

Collection是最基本的接口,Java SDK提供的类都是继承自Collection的子接口,例如“List”、“Set”

Collection接口特点

性能高

易扩展

易修改

List接口的使用

List接口的特点

List接口可以存放任意的数据,且在接口中,内容可以重复

List中提供了高效的插入和移除多个元素的方法

List常用(实现)子类

ArrayList(实现类)

例:List

Vector(实现类)

例:List

ArrayList和Vector区别

|ArrayListVector

推出时间JDK1.2后JDK1.0后

性能异步处理,性能高同步处理,性能低

线程安全非线程安全线程安全

Set的使用

Set接口的特点

Set接口可以存放任意的数据,且在接口中,数据不可以重复(注意和List进行区别)

Set接口常用子类

HashSet

Set

TreeSet

Set

HashSet和TreeSet的区别

HashSet与TreeSet都是间接实现了Set接口,同样拥有add、remove等方法

HashSet是无序存放的、而TreeSet实现是有序存放(ASCII顺序存放)

Map的使用

Map的特点

Map接口存放数据是以键值对的形式存放,例如:

key -> value

"name" -> "尼古拉斯赵四"

"age" -> "33"

键(key)的类型要一致,值(value)的类型也要一致。

Map常用实现类(实现类的方法和List、Set的方法不一样)

HashMap

Map maps = new HashMap<>();

maps.put("name","詹姆斯刘能");

maps.put("age","24");

List接口常用方法

boolean add(Object o) 在列表的末尾顺序添加元素,起始索引位置从0开始

void add(int index,Object o) 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间

int size()返回列表中的元素个数

Object get(int index)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换

boolean contains(Object o) 判断列表中是否存在指定元素

boolean remove(Object o) 从列表中删除元素

Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始

LinkedList常用方法

void addFirst(Object o) 在列表的首部添加元素

void addLast(Object o) 在列表的末尾添加元素

Object getFirst() 返回列表中的第一个元素

Object getLast() 返回列表中的最后一个元素

Object removeFirst() 删除并返回列表中的第一个元素

Object removeLast() 删除并返回列表中的最后一个元素

Map接口常用方法

Object put(Object key, Object val) 以“键-值”对的方式进行存储

Object get(Object key) 根据键返回相关联的值,如果不存在指定的键,返回null

Object remove(Object key) 删除由指定的键映射的“键-值对”

int size() 返回元素个数

Set keySet() 返回键的集合

Collection values() 返回值的集合

boolean containsKey(Object key) 如果存在由指定的键映射的“键-值对”,返回true

迭代器iterator的使用(接口)

iterator自带常用方法

hasNext:如果仍有元素可以迭代,则返回true

next:返回迭代下一个元素

remove:从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)

Set

Collection

欢迎工作一到五年的Java工程师朋友们加入Java群: 891219277

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

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

推荐阅读更多精彩内容

  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 11,530评论 2 61
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 734评论 0 2
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 869评论 0 1
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,365评论 0 4
  • 龙峰顶上观音立, 俯望平川荡海波。 眺览南山龙首秀, 登梯祷圣颂经歌。 注:福宁露天观音菩萨圣像,座落于福建省霞浦...
    文贝阅读 2,260评论 37 35