Java集合概述Set、List、Map

Java的集合类是由两个接口类派生而出:Collection、Map

1、Collection接口派生出来的Set集合是无序集合,派生出的List集合是有序集合、队列Queue

-Set集合中的元素无序不允许重复
-List集合类似数组,元素有序同时长度可变,且元素允许重复

2、Set集合:
(1)Set集合不能记住元素的添加顺序,不允许包含重复元素,如果添加重复元素,会添加失败,返回false,且不会添加进入;
(2)HashSet类:集合元素值可以为null;如果多个线程访问一个HashSet,需要通过代码保证其同步(非线程安全的)
注:如果把一个对象放入到HashSet中,重写了equals方法,则需要重写HashCode方法(即两个方法要保持同步)
(3)LinkedHashSet类:HashSet的子类,根据hashCode方法计算位置,同时使用链表维护元素次序,内部元素是有序的(添加顺序)
注:Set集合实现类HashSet、TreeSet、EnumSet都是线程不安全的,可以通过Collections工具类的synchronizedSortSet进行包装该Set集合,保证多个线程访问一个Set集合时的线程安全;Set集合遍历可以使用iterator迭代器进行迭代;
3、List集合:
(1)List集合代表元素有序,可重复的集合,默认按照添加顺序设置元素的索引
(2)List集合遍历除了可以使用iterator迭代器外,还提供ListIterator迭代器进行遍历
(3)ArrayList和Vector实现类:基于数组实现的List类,他们均封装了一个动态的、允许动态再分配的Object[]数组(如果初始长度不指定,则为10);另外ArrayList是线程不安全的,Vector是线程安全的;(遍历建议get方法)
(4)LinkedList类:List接口的实现类,遍历建议采用Iterator迭代器;

2、Map集合是有顺序的,是key-value对应的,key不可以重复,但value可以重复:
(1)Map转为set使用entrySet方法
(2)HasnTable是一个线程安全的Map实现,但不允许使用null为key或者value的键值对;HashMap是线程不安全的,同时可以使用null作为key或者value;
(3)HashTable和HashMap不能保证key和value键值对的顺序;(相等判断仅仅比较value相同即可)
(4)LinkedHashMap使用双向链表来维护;
注:Map遍历:
map集合不能直接遍历,需要转变为Set集合利用Iterator迭代器进行遍历;
keySet()以及entrySet方法结合while或者for-each遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值