List,Set,和Map的区别

首先先简单的看看他们的结构

 

看不清楚?

没关系,来看看这个


 

在这里我们可以看出,List,Set接口直接继承Conlllection接口,而Map是另一个接口。

Conlllection继承自Iterable接口,该接口可以可以增强for循环。

 

 

一. collection接口是集合框架的顶级接口(set与list的父接口,不是map集合的父接口)

1.list集合

list集合是有序的,可以重复,只能添加引用数据类型(八大基本数据类型)
    list集合有三种遍历方式
下标遍历(remove对象的时候会进行隔行逻辑操作)
    foreach遍历(remove对象会有当前改变异常 不能进行移除)
    迭代器遍历(正常操作)
list与数组最大的区别在于数组有长度的限制而list并没有(但是其实list是有长度的)每次 初始容量10,负载因子0.5也就是说会以1.5的增加量在list集合里面扩容
 

  1. 1.vector与ArrayList的区别

  • ArrayList   线程安全低  不同步(单个线程访问集合) 速度快

  • vector  线程安全高 同步(多个线程访问集合) 速度慢

 

2.set集合

set集合无序、对象不能重复(eqauls)      (eqauls从Object继承,默认比较的内存地址)
    hashset的排序是散列排序(随机排序)关于hashset有序的问题
    treeset被称为平衡树/红黑树/二叉树(排序:字符串比的不是数值,按首位的ASCII码进行,如果相同,则对比下一位,始终一致的话,则对比长度;
    hashset与hashtable的区别
          1.hashset用来做高性能集运算的,例如对两个集合求交集、并集、差集等。集合中包含一组不重复出现且无特性顺序的元素,HashSet拒绝接受重复的对象。

            2. hashtable用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。

 

 

 

二.map接口图解

1.无序、以键值对的形式添加元素,键不能重复,值可以重复,如果键相同,值会覆盖
            它没有继承Collection接口
  2 遍历
          2.1 先取出保存所有键的Set,再遍历Set即可
          2.2 先取出保存所有Entry的Set,再遍历此Set即可(快速遍历Map)
 

三.比较器接口(Comparator)与自然排序接口(Comparable)

1. java.lang.Comparable:自然排序接口

2. java.util.Comparator:比较器接口

 

 

使用比较器接口实现类对象属性的排序比如:

实现方法(完成排序)

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值