java collection_Java 集合框架一 集合框架概述

集合是用来存放对象的容器。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。

1、集合的概念

关于集合的定义,有以下三点注意:

(1)集合只能存放对象。基本数据类型会进行自动装箱转化为对应的引用类型;

(2)集合存放的都是对象的引用,而非对象本身。对象本身还是放在堆内存中;

(3)集合可以存放多种类型,不限数量的数据类型。

集合与数组的区别:

(1)数组的长度不可变化,且不能存放具有映射关系的数据(k-v);集合用来保存数量不确定的数据,且可以保存具有映射关系的数据;

(2)数组既可以存放基本类型的数据,又可以存放对象;集合只能存放对象。

Java将一些具有相似属性和功能的数据结构抽象为一组公共的接口,Java的集合框架就是围绕这些标准接口进行设计的,你可以直接使用这些接口的标准实现,也可以通过这些接口实现自己的集合类。

2、Java集合框架

Java集合框架是由两个根接口:Collection和Map派生而来的,Collection接口派生出了三个子接口:List、Set、Queue,List接口有两个比较常用的实现类:ArrayList和LinkedList,Set接口有两个比较常用的实现类:HashSet和TreeSet,Queue的实现类也有LinkedList;Map接口有两个比较常用的实现类:HashMap和TreeMap,还有个不经常用的实现类:HashTable。注意的是Collection接口和Map接口也被抽象类AbstractList和AbstractMap实现,具体的实现类比如ArrayList在实现了List接口的同时也继承了AbstractList抽象类。

集合框架图如图所示,这里引用的是链接1中的图,注意图中忽略了抽象类AbstractList和AbstractMap。

e4fe95c775171247f3bfbed901431189.png
Collection接口

15498f0fdf81b90e2feaaab5a0fdf355.png
Map接口

3、迭代器Iterator

迭代器是用来遍历集合类的。上面讲的集合框架的两个根接口:Collection接口和Map接口,其中Collection接口又继承了更顶层的Iterable接口,Iterable接口里又封装了 Iterator 接口,源码如下:

public 

Iterator 接口里包含了三个重要方法:

public 

因此只要是实现了Collection接口的集合类,都可以调用Iterator迭代器遍历集合类,通用方法如下:

Iterator 

其中l为实现了Collection接口的集合类。

注意:Map接口并没有继承Iterable接口,因此实现了Map接口的类不能直接通过map.iterator()得到迭代器,需要将Map类通过map.entrySet()转化为Set集合类(实现了Collection接口),再通过set.iterator()使用迭代器。

3.1 用迭代器遍历Collection接口的实现类

以ArrayList为例,代码如下:

public 

3.2 用迭代器遍历Map接口的实现类

以HashMap为例,代码如下:

public 

参考

愤怒的小情绪:详解Java集合框架,让你全面掌握!​zhuanlan.zhihu.com
95fe3a2dc59c040a2f5db16558220617.png
Java集合(一)、什么是Java集合? - 黎先生 - 博客园​www.cnblogs.com
0376c1e9d09239100d899acf6aaf421a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值