java se 核心技术_javaSE核心技术-集合

为什么使用集合框架

*如果想用定长的数据操作,可以使用数组。

*如果想要对不定长的数据操作,可以使用集合。

*如果并不知道程序运行时会需要多少个对象,或需要更复杂的方式存储对象可以使用java集合框架。

java中的集合类

java中集合类是用来存放对象的。

集合相当于一个容器,里面包容着一组对象 —— 容器类

其中的每个对象作为集合的一个元素出现

Java API提供的集合类于java.util包内

java中数组与集合的比较

数组也是容器,它是定长的,访问较快,但是数组不会自动扩充

数组可以包含基本数据类型或引用类型的对象,而集合中只能包

含引用类型的对象

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

Collection接口

一组称为元素的对象

一个collection中可以放不同类型的数据

是set接口和list接口的父类

是否有特定的顺序以及是否允

许重复,取决于它的实现

set-无序的集合,不允许重复HashSet

list-有序的集合,允许重复

-ArrayList

-LinkedList

Collection接口常用方法

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

Set接口

Collection的子接口

用来包含一组无序无重复的对象

无序 — 是指元素存入顺序和集合内存储的顺序不同;

无重复 — 两个对象e1和e2,如果e1.equals(e2)返回true,则认为e1和e2重

复,在set中只保留一个。

Set接口的实现类

HashSet — HashSet的特性在于其内部对象的散列存取,即采用哈希技

TreeSet — TreeSet存入的顺序跟存储的顺序不同,但是存储是按照排

序存储的

使用foreach方式遍历Set集合

List接口

Collection的子接口

用来包含一组 有序有重复 的对象

List中的元素都对应一个整数型的序号,记载其在容器中的位置,可以根据序号存取容器中的元素。

List有两种主要的集合实现类:

-ArrayList

-LinkedList

两个实现类的区别:

*ArrayList是线性顺序存储的,是一种线性表

它的特性和数组很接近,数组大小是不变的,而ArrayList的大小是可以动态

改变的

*LinkedList是数据结构中链表的java实现

相对于List来说,LinkedList最主要的功能方面的增强是可以在List的头部

和尾部添加、删除、取得元素,直接提供了这些方法的实现。所以它可以非

常方便的实现我们数据结构中的常见的Stack(栈)、queue(队列)等

List接口常用方法

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

实现类的初始化

ArrayList的构造方法

ArrayList 变量名=new ArrayList();

ArrayList 变量名=new ArrayList(int capacity);

ArrayList 变量名=new ArrayList(Collection c);

LinkedList类的构造方法

LinkedList 变量名 = new LinkedList() ;

LinkedList 变量名 = new LinkedList(Collection c) ;

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

Iterator接口

Iterator对象称作迭代器,用来实现对容器内的元素进行遍历操作。

所有实现了Collection接口的集合类都有一个iterator( )方法,返回一

个实现了Iterator接口的对象

Iterator的功能上比较简单,

使用中,只能单向移动

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

Collections类

Collections类是类似于Arrays类的公用工具类

Collections类中的方法

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

Map接口

Map接口

Map内存储的是键/值对这样以成对的对象组(可以把一组对象当成一个元

素),通过“键”对象来查询“值”对象

Map是不同于Collection的另外一种集合接口

Map中,key值是唯一的(不能重复),而key对象是与value对象关联在一

起的

Map接口有两个实现:

HashMap — key/value对

是按照Hash算法存储的

TreeMap — key/value对是排序

(按key排序)存储的

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

HashMap类

HashMap类是Map接口的实现类

HashMap的构造方法

HashMap 变量名=new HashMap();

HashMap 变量名=new HashMap(int capacity);

HashMap 变量名=new HashMap(int capacity,float iodeFactor);

HashMap 变量名=new HashMap(Map m);

HashMap与TreeMap的比较

HashMap基于哈希表实现。

TreeMap基于树实现。

HashMap可以通过调优初始容量和负载因子,优化HashMap空间的使用。

TreeMap没有调优选项,因为总处于平衡状态。

HashMap性能优于TreeMap。

集合类的选择

Set内存放的元素不允许重复,List存放的元素有一定的顺序。

Map的应用主要在利用键/值对进行快速查询。

ArrayList和LinkList的区别在于随机查询性能上ArrayList要好,但LinkList的中间元素的插入与删除的性能好。

HashSet和TreeSet区别在于集合内元素是否排序。

泛型的使用

集合中泛型的使用

泛型通常被称为参数化类型,它能像方法一样接受不同类型的参数。

定义方式:

ArrList 变量名;

E是变量类型

03a7e3d8232f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

图片.png

集合在使用上的问题

集合中的add( )方法接受的是一个Object对象的参数 ,在获取集合中的

对象时,必须进行造型(强制类型转换)操作。

造型操作可能出现问题,一般在程序运行时才能发生,发现问题比较困

难。

集合中泛型的使用

在对象放入集合前,为其作个限制

在获取集合中的对象时,不用进行造型的操作

当有不同类型的对象添加到集合中的时候,编译时就能检查出错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值