Java基础系列(二)

本文深入解析Java集合框架,包括Set、List与Map三大核心接口及其实现类,如HashSet、LinkedHashSet、TreeSet、ArrayList、LinkedList、HashMap、LinkedHashMap和TreeMap的特性与应用场景。文章还提供了选择合适集合类型及编程最佳实践的指导。

集合

一、Java集合构架支持三种类型的集合:规则集(set)、线性表(list)和图(map),它们分别定义在接口
Set 、List与 Map 中。 Set 的实例存储一组互不相同的元素,List 的实例存储一组顺序排列的元素,Map的实例存储一组对象,每个对象都有一个关联的键值。

在这里插入图片描述
map

Collection***************************************************************

在这里插入图片描述
注:addAll 、removeAll 、retainAll 方法与集合的并、差、交运算类似。
HashSet、LinkedHashSet和TreeSet
这三个类都是实现了Set接口的,所以此三个集合中的元素都是不同的。
HashSet是最基本的,
LinkedHashSet是按元素插入的顺序进行存储,
TreeHashSet中的元素总是保持元素的大小关系,所以添加到树形集中的元素必须是可比较的
TreeSet可以由HashSet对象构造,相当于把HashSet集合排序。
TreeSet还可以用实现了Comparator的实例构建,实例中compare参数可以接受的类型都可以放到集合中。
在没有特别需要时,最好选择HashSet,因为HashSet简单,效率高

ArrayList、LinkedList和Vector。
ArrayList相当于数组,LinkedList相当于链表
若要提取元素以及在线性表的尾部插入或删除元素, ArrayList 是高效的。
若要在线性表的任意位置上插入和删除元素, LinkedList 的运行效率要高一些。
Vector就是同步的ArrayList

Map******************************************************

在这里插入图片描述

HashMap、LinkedHashMap和TreeMap
同上。

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

●如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,
如果多个线程可能同时操作一个类,应该使用同步的类。

●要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。

●尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,
客户端代码不用改变。这就是针对抽象编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值