JAVA集合框架

目录

1.java集合概述

1.集合框架 

2.Collection接口 

3.集合的遍历 

1.使用lterator接口遍历集合元素 

2.使用foreach循环遍历集合元素 

2.List 

1.List概述 

2.ArrayList集合类 

3.LinkedList集合类 

3.HashSet集合 

4.Map 

1.Map概述

2.HashMap集合类 

3.HashMap集合的遍历 

5.泛型集合 

1.应用泛型 


1.java集合概述

  • 数组长度固定不变
  • 不便存储具有映射关系的数据
  • 数据变更效率低下

1.集合框架 

java集合框架提供了一套性能优良、使用方便的接口和类,它们都位于java.util包中,集合中的元素全部是对象,即Object类的实例,不同的集合类有不同的功能和特点,适合不同的场合。

java的集合类主要由两个接口派生而成:Collection接口。Collection接口和Map接口是java集合框架的根接口,这两个接口又包括了一些子接口或实现类。其中,Collection接口常用的子接口包含List接口和Set接口;另外一个重要接口是Map接口,它是独立一支,以上三者都是集合接口,其实现类为java中经常使用的集合类型。java集合框架常用接口说明如下表些外,java集合框架还包括相关的工具类(Iterator迭代器接口、Arrays类和Collections类)。

2.Collection接口 

 Collection接口是List接口、Set接口的父接口,该接口中定义的方法既可用于操作Set集合,也可用于操作List集合。Collection接口常用的方法如下表所示。

3.集合的遍历 

当使用System.out.println()方法输出集合对象时,其将以[elel,ele2,...]的形式输出,这是因为所有的Collection实现类都重写了toString()方法,该方法可以一次性地输出集合中的所有元素。但是,如果想依次访问集合里的每一个元素,并实现对该元素的操作,则需要使用某种方式遍历集合元素,下面介绍遍历集合的两种方法。

1.使用lterator接口遍历集合元素 

  • Iterator接口也是java集合框架的成员,但它与集合不一样。集合主要用于他对象,而Iterator接口主要用于遍历(迭代访问) Collecion集合中的元素,Iterator对象也被称为迭代器。
  • Iterator接口隐藏了各种Collection实现类的底层细节,向应用提供了遍历Collection集合元素的统一程接口。Iterator接口定义了如下三个方法。

2.使用foreach循环遍历集合元素 

除可以使用Iterator接口遍历Collection集合的元素外,使用foreach循环遍历集合元素会更加便捷。foreach循环是JDK1.5引入的语法结构,也被称为增强for循环,可用于遍历集合和数组。其语法结构如下:

for(数据类型type迭代变量名value:迭代对象object){
         //引用迭代变量value的语句
}

2.List 

1.List概述 

List接口作为Collection接口的子接口,可以使用Collection接口定义的全部方法。由List集合是有序集合,所以List接口在Collection接口方法的基础上,另外扩展了一些根据索引操作集合元素的方法如下表所示。

所有List集合都可以调用上表中的方法操作集合元素。List集合比Collecton接口补充了更多的方法,而且这些方法操作起来很方便,需要通过List接口的子类实例化对象调用。常用的子类有ArrayList类和LinkedList类,它们的集合对象都可以容纳所有类型的元素对象,包括null,允许重复,并且保证元素按顺序存储。

2.ArrayList集合类 

使用集合存储多类水果信息,在一次存储数据之后,还会根据需要进行数据新增、删除、更新、显示部分数据等常用操作。具体如下所示。

  • 向集合中添加水果信息。
  • 向指定排序位置新增水果信息
  • 删除指定排序位置的水果信息
  • 更新指定排序位置的水果信息
  • 截取指定部分的水果信处集合 

3.LinkedList集合类 

由于ArrayList集合采用了和数组相同的存储方式,在内存中分配连续的空间,当添加和删除除非尾部元素时会导致后面所有元素的移动,性能低下,所以在插入、删除操作较频繁时,可以考虑使用LinkedList集合提高效率。

LinkedList类是List接口的实现类,这就意味着LinkedList集合和ArrayList集合都是一个List集合,可以根据索引随机访问集合中的元素。除此之外,LinkedList集合还具有双向链表结构,更加方便实现添加和删除操作。基于LinsedList集合的特征之外,它除具有上表的方法外,还提供了实现 链表操作的方法如下表所示。

3.HashSet集合 

HashSet类是Set接口的典型实现,使用HashSet集合可以实现 对无序不重复数据的存储,具有很好的存取和查找性能。它具有以下特征。

  • 不允许存储重复的元素。
  • 没有索引,没有包含索引的方法,不能使用索引遍历。
  • 是无序集合,存储元素和取出元素的顺序可能不一致。 

4.Map 

1.Map概述

Map集合可以存储若干个成对的键-值对象,提供键(key)到值(value)的映射。其中key为Set集合类型,不要求有序,不允许重复;value同样不要求有序,但允许重复。因为Map接口与Collection接口不存在继承关系,所以Map集合对象不能使用Collection接口定义的方法,而使用特有的能够操作"键-值对"的方法。Map接口的常用方法如下表所示。

Map接口提供了大量实现类,典型实现类如HashMap类、HashTable类、TreeMap类等,其中HashMap类是最常用的Map接口实现类。 

2.HashMap集合类 

 建立中国省份或直辖市全称与简称对照关系表,每个省份或直辖市全称与简称之间存在键-值映射,如“北京市的简称为”京“,通过删除键实现对”键-值对“的删除,应该如何实现数据的存储和操作?

3.HashMap集合的遍历 

对于Map接口来说,其本身是不能直接使用迭代(如Iterator、forech)进行输出的。由于Map中的每个位置存入的是”键-值对“,而Iterator迭代器每次只能找到一个值,可以先获取所有键的集合,通过遍历的集合,找到每个键对应的值,因此如果需要使用Iterator迭代器进行输出。

5.泛型集合 

  • 前面讲过各集合类存储的都Object对象,这样就会造成无论每个对象真实的数据类型是什么,一旦存储到java集合中,集合就会忘记其真实的数据类型,把所有的对象当成Object类型处理。当程序被从集合中取出后,就需要进行强制类型转换,这种强制类型转换使代码臃肿,而且,当录入对象的数据类型与希望转换的目标类型不符时,还会引发ClassCastExcetpion异常。
  • 从JDK1.5开始引入泛型(Generic),它有效解决了这个问题。在JDK1.5中已经改写了集合框架中的所有接口和类,增加了泛型的支持。泛型可以约束录入集合的元素类型,大大提高了数据安全性,从集合中取出数据无需进行类型转换,从而让代码更加简洁,程序更健壮。

1.应用泛型 

泛型集合可以约束集合中元素的类型,它可以把类型当作参数一样传递。泛型集合的形式为List<E>、Map<K,V>等,其中<E>、<K,V>是集合的类型形式参数,可以在创建集合时,指定这些类型参数,即元素的数据类型,添加元素必须为指定类型对象,保证数据的安全性。 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值