java基础——图解集合

collection为了满足应用需求,他有划分,可以存储重复元素的和不可以重复元素的,有序的或者无序的,最终体现在了他的子接口,定义了一个可以存储重复元素的规则以及不允许重复元素的规则

一、list(列表): 有序的(存储的顺序和取出的顺序一致)可以存储重复的元素。对内容精确控制

特点:对元素都有索引对应,可以实现对元素的更多操作,而且可以像操作数组一样

①  ArrayList:内部结构是数组,而且是大小可变的数组(原理就是不断的new数组,并将原数组的元素copy到新数组),是不同步的,效率比Vector高

特点:查询快,增删慢(相对常用,因为查询功能使用更频繁)

②  LinkedList:内部数据结构是链接列表(链表)

特点:查询慢,增删快,非同步的

可以用链表完成堆栈或者队列结构

堆栈:先进后出    First In  Last   Out(如同一个杯子)

队列: 先进先出  First  In First  Out(如同一个水管)

③  Vector:内部数据结构:数组(大小可变的数组),jdk1.2版加入集合框架的,他是同步的,效率低

无论查询增删都很慢,被ArrayList替代了


二、set:Set集合中的方法和collection一致,元素必须唯一

①  HashSet :底层是哈希表数据结构,不保证顺序。不同步的(哈希算法也叫散列算法)

好处:查询更快,元素必须唯一性,不保证顺序,

原理:如果出现哈希值(方法:hashcode)相同,会在判断元素的内容(方法:equals)是否相同,如果内容也相同,则 不存。 如果内容不同,会进行二次算法,将元素存储到哈希表中。相同的哈希值叫做:哈希冲突。

哈希表判断元素是否相同依赖两个方法:hashcode和equals,若hashcode不同则不调用equals,否则调用equals,通常都会覆盖这两个方法

② TreeSet:基于红黑树结构(二叉树)数据结构,非同步,可以对set中的元素进行自然排序

要想让对象具备比较方式,就得实现comparable,覆盖compareto

排序方式一:元素实现了Compareable接口,覆盖了compareto方法,根 据元素自身建立了比较方式

  想要让对象具备比较性,应该实现compareable接口,覆盖compareto方法,对象之间比较需要通过方法来完成,基本数值比较通过运算符完成

当元素不具备自然排序,或者具备的自然排序不是所需的,就使用方式二

排序方式二:自定义比较器Comparator,将比较器对象作为参数传递给Treeset集合的构造函数

三、map:特点:1、  一次存储一对元素2、一对元素存在映射关系,一个称为键,一个称为值3、键不能重复

主要子类:

① hashtable:哈希表结构,键值不能使用null,同步的

② hashmap:哈希表结构,键值能使用null,不同步,效率高于hashtable

③ treemap:二叉树结构,可以对map集合中的键进行排序




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值