001-jdk-数据结构-总览

一、集合类简介

1.1、背景 

  数组是很常用的一种的数据结构,用它可以满足很多的功能,但是,有时会遇到如下这样的问题:

    1、需要该容器的长度是不确定的。

    2、需要它能自动排序。  

    3、需要存储以键值对方式存在的数据。

   如果遇到上述的情况,数组是很难满足需求的,另一种与数组类似的数据结构——集合类,集合类在Java中有很重要的意义,保存临时数据,管理对象,泛型,Web框架等,很多都大量用到了集合类。

1.2、常见的集合类有

  实现Collection接口的:Set、List以及他们的实现类。

  实现Map接口的:HashMap及其实现类,

  我们常用的有Map及其实现类HashMap,HashTable,List、Set及其实现类ArrayList、HashSet

    

    

下面的表格也许可以更直接的表现出他们之间的区别和联系:【常用的】

父接口接口描述实现操作特性成员要求

Iterable←

Collection

Set

成员不能重复

单值元素

HashSet外部无序地遍历成员

成员可为任意Object子类的对象,但如果覆盖了equals方法,

同时注意修改hashCode方法。

TreeSet

外部有序地遍历成员;附加实现了SortedSet,

支持子集等要求顺序的操作

要求实现caparable接口,或者使用 Comparator构造TreeSet。

成员一般为同一类型。

LinkedHashSet外部按成员的插入顺序遍历成员成员与HashSet成员类似
List

提供基于索引的对成员的随机访问

单值元素

ArrayList提供快速的基于索引的成员访问,对尾部成员的增加和删除支持较好成员可为任意Object子类的对象
LinkedList

对列表中任何位置的成员的增加和删除支持较好,

但对基于索引的成员访问支持性能较差

成员可为任意Object子类的对象
 Map

保存键值对成员,基于键找值操作,

compareTo或compare方法对键排序

HashMap能满足用户对Map的通用需求

键成员可为任意Object子类的对象,但如果覆盖了equals方法,

同时注意修改hashCode方法。

TreeMap

支持对键有序地遍历,使用时建议先用HashMap增加和删除成员,

最后从HashMap生成TreeMap;附加实现了SortedMap接口,

支持子Map等要求顺序的操作

键成员要求实现caparable接口,或者使用Comparator构造TreeMap。

键成员一般为同一类型。

LinkedHashMap保留键的插入顺序,用equals 方法检查键和值的相等性

成员可为任意Object子类的对象,但如果覆盖了equals方法,

同时注意修改hashCode方法。

IdentityHashMap使用== 来检查键和值的相等性。成员使用的是严格相等
WeakHashMap其行为依赖于垃圾回收线程,没有绝对理由则少用 

  实现Collection接口的类,如Set和List,他们都是单值元素(其实Set内部也是采用的是Map来实现的,只是键值一样,从表面理解,就是单值),不像实现Map接口的类一样,里面存放的是key-value(键值对)形式的数据。这方面就造成他们很多的不同点,如遍历方式,前者只能采用迭代或者循环来取出值,但是后者可以使用键来获得值得值。

1.3、集合类 & 容器

1.3.1、为什么出现集合类?

  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。

1.3.2、数组和集合类同是容器,有何不同?

  数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储任意数据类型,集合只能存储对象。

  数组只能装同一种数据类型的数据;长度不能能动态改变;

1.3.3、集合类的特点

   集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

 

 

转载于:https://www.cnblogs.com/bjlhx/p/11049939.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值